[英]R: Extracting Data Frame from list of CSV file data
所以我来自Matlab和Python(以及其他一些不太相关的背景)。 我正在为Coursera课程学习R。
我遵循了这样的答案 ,以便将我的所有作业文件读入单行代码的列表中。 我的代码如下所示:
# Get a list of files
files = list.files(path = dataDir, pattern = '*.csv')
# Import the file data
setwd(dataDir)
data = lapply(files, read.csv)
这一切都很好。 但是,我找回了一个我不知道如何访问的对象。 我之前提到过Matlab和Python,是因为我试图用我在那些语言中使用的所有方式来访问数据。
这是摘要输出:
summary(data)
Length Class Mode
[1,] 4 data.frame list
[2,] 4 data.frame list
[3,] 4 data.frame list
实际上,其中有352个不仅3个,而且没有人需要列出所有352个。这是单个索引输出的summary
:
summary(data[200])
Length Class Mode
[1,] 4 data.frame list
因此,如果我输入data[200]
则会得到前2500行数据的列表。 但是data[200, 100]
以及data[200][,100]
和data[200][100,]
一样作为错误返回。 data[200][100]
返回[[1]] NULL
。
尽管我还没有完全考虑完成此家庭作业需要做什么,但我确定它将涉及计算各种数据列中所有非NA值的均值/中位数/最大值/等。 对于使用诸如mean(data[which(is.na('Col1')==F), 'Col6'])
类的测验mean(data[which(is.na('Col1')==F), 'Col6'])
。
因此,我想我可以在需要的地方使用更hackish的版本,只需在需要时加载所需的1个文件,然后仅提取所需的数据帧部分,然后遍历所有数据文件我需要处理。 但是,我宁愿知道如何访问lapply
行中R创建的对象中的数据。 我怀疑这将使以后更复杂的分析变得更容易编写代码。
谢谢
子集化时,单个方括号[
总是返回与您要设置的对象相同类的对象。 因此, data[200]
返回一个包含一个数据帧的长度为1的list
,因为data
是一个列表。 双方括号[[
为您提供列表中包含的实际对象(在这种情况下,为数据框)。 有了数据框后,就可以使用[100,]
选择前100行,这就是以下原因的原因:
data[[200]][100,]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.