簡體   English   中英

R:從CSV文件數據列表中提取數據框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM