我正在一次性处理多个csv文件。
getResult<-function(df){
c(runif(1, 0, 1), runif(1, 0, 1))
}
filenames <- list.files("temp", pattern="*.csv", full.names=TRUE)
ldf <- lapply(filenames, read.csv)
res <- lapply(ldf, getResult)
在'getResult'函数中,我计算两个浮点值。最后,我需要一个带有文件名和两个'float'值的数据框。我怎么做?
我尝试了以下操作:
data.frame(res,filenames)
但我没有得到理想的结果。有人可以指导吗?
感谢。
添加部分输入(res)输出:
list(c(0, 0.11340206185567), c(0, 0.0317919075144509),
c(0, 0.0569948186528497))
答案 0 :(得分:3)
您可以尝试以下
data.frame(do.call(rbind, res), filenames)
do.call
会在列表rbind
上调用res
函数,然后data.frame
会将列绑定到data.frame
答案 1 :(得分:2)
您可以使用sapply()
代替lapply()
来计算res
。这将使矩阵具有与文件数对应的两行和两列。然后在data.frame()
中使用t()
将您的矩阵转置为两列。
res <- sapply(ldf, getResult)
data.frame(t(res),filenames)