2015-07-10 92 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的载体。