所以我來自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