2015-07-10 90 views
2

因此,我正在使用Python處理數據,並將其輸出爲.csv文件。我希望R能夠以這樣一種方式讀取.csv文件,即將它變成一個數據幀,其中一些列實際上是矢量。如何從R中的.csv文件中讀取列矢量

這是甚至可能的,我將如何格式化.csv,以便這可能發生?謝謝!

+0

什麼問題?只需使用'dat < - read.csv(「file.csv」)',然後用'dat $ column'選擇列,就可以得到一個向量。按定義,csv是一個文本文件,其中的列以逗號分隔,所有行的列數相同。 – Molx

回答

6

首先,vectors只是一個數據元素序列。而data frames是等長向量的列表。

因此,您可以很容易地將數據幀的each column作爲向量。

df <- read.csv('C:\\Path\\To\\DataFile.csv') 

v1 <- df[[1]] # by column number 
v2 <- df[["col1"]] # by column name 
v3 <- df$col1 # by column name 
+0

但是如果列中的向量在行之間不是全部相同的長度呢? – Zeke

+0

導入csv文件時,數據框的所有列將具有相同的長度,填充這些行的缺失值。定義個別向量時,只需刪除錯誤:'v1 < - v1 [v1!=「」]'。 – Parfait

0

你可以只讀取r中的CSV,這將是默認情況下,數據框:

data<-read.csv("nameOfCSVFile.csv", header=T) 

然後,您可以通過列切片數據框,並使用$運營商處獲得該列作爲載體:data$header1返回數據幀的第一列作爲向量。

只是確保你的.csv文件是在爲了你想 即

header1,header2,etc. 
    1,2,etc. 
    4,5, etc. 
    etc.. 
0

實際上,一個數據幀是向量的集合。如果您想在矢量形式的數據,簡單得使用子集功能:

df <- data.frame(matrix(rnorm(10), nrow=5)) 

df$X1 
## [1] 1.05376208 0.05020266 1.79204302 -1.73712344 -1.29208706 
is.vector(df$X1) 
## [1] TRUE 

因此,通過子集,在這裏你得到的數據幀列X1的載體。