我刚刚学习R.我有300个不同的文件包含降雨数据。我想创建一个采用一系列值(即20-40)的函数。然后,我将读取名为“020.csv”,“021.csv”,“022.csv”等的csv文件,直到“040.csv”。
这些文件中的每一个都有一个名为“rainfall”的变量。我想打开每个csv文件,提取“降雨”值并将它们存储(追加)到某种对象,比如数据框(也许其他更好的东西?)。所以,当我完成后,我将拥有一个数据框或列表,其中包含一个包含所有已处理文件的降雨数据的列。
这就是我的......
rainfallValues <- function(id = 1:300) { df = data.frame() # Read anywhere from 1 to 300 files for(i in id) { # Form a file name fileName <- sprintf("%03d.csv",i) # Read the csv file which has four variables (columns). I'm interested in # a variable named "rainfall". x <- read.csv(fileName,header=T) # This is where I am stuck. I know how to exact the "rainfall" variable values from # x, I just don't know how to append them to my data frame. } }
答案 0 :(得分:3)
以下是一种使用lapply
的方法,该方法将返回降雨列表
rainList <- lapply(id, function(i) {
temp <- read.csv(sprintf("%03d.csv",i))
temp$rainfall
})
将其放入单个载体中:
rainVec <- unlist(rainList)
评论
unlist
函数将保留您在文件中读取的顺序,因此rainVec的第一个元素将是id中第一个文件的第一个降雨量列的第一个观察值,第二个元素是该文件中的第二个观察值等等到最后一个文件的最后一次观察。