所以我来自Matlab和Python(和其他几个相关性较低的)的背景。我为Coursera课程选择R。R:从CSV文件数据列表中提取数据帧
我跟着这个SO answer为了阅读所有我的作业文件到一行代码列表中。我的代码看起来像这样:
# 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'])
之类的测验,这并不难。
所以我想我可以使用我需要的更恶心的版本,我只需在我需要的时候加载我需要的1个文件,只提取我需要的部分数据帧,然后循环我需要处理的所有数据文件。但是,我宁愿知道如何访问lapply
行中创建的对象R中的数据。我怀疑这会使代码更容易编写更复杂的分析。
感谢
如果你'数据[200] [100]'会发生什么? –
@CactusWoman这样做。谢谢。你能回答这个问题吗?我可以接受吗? –
@gabe只是想说明,它看起来像数据是data.frames的列表。您可以直接访问列表中的项目:'data [[1]]',它将访问列表的第一项。然后你在@CactusWoman所说的附加括号'[100,]'中选择数据框。 – giraffehere