【问题标题】:R + convert a list of results into data frameR +将结果列表转换为数据框
【发布时间】:2013-04-22 05:48:37
【问题描述】:

我正在一次处理多个 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”函数中,我正在计算两个浮点值。最后,我需要一个带有文件名和两个“浮点”值的数据框。我怎么做?

我尝试了以下操作:

data.frame(res,filenames)

但我没有得到想要的结果。有人可以指导吗?

谢谢。

添加部分 dput(res) 输出:

list(c(0, 0.11340206185567), c(0, 0.0317919075144509), 
c(0, 0.0569948186528497))

【问题讨论】:

    标签: r dataframe lapply


    【解决方案1】:

    您可以尝试关注

    data.frame(do.call(rbind, res), filenames)
    

    do.call 将在列表res 上调用rbind 函数,然后data.frame 将列绑定到data.frame

    【讨论】:

      【解决方案2】:

      您可以使用sapply() 代替lapply() 来计算res。这将使矩阵具有与文件数相对应的两行和两列。然后在data.frame() 中使用t() 将矩阵转置为两列。

      res <- sapply(ldf, getResult)
      data.frame(t(res),filenames)
      

      【讨论】:

      • 我更喜欢这个答案,因为它不会将结果转换为字符串。另一个答案是将结果转换为字符串。
      猜你喜欢
      • 2022-12-15
      • 2018-03-14
      • 2015-04-16
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 2022-06-27
      • 2020-07-29
      • 1970-01-01
      相关资源
      最近更新 更多