【问题标题】:Convert a list into multiple data frame by list column按列表列将列表转换为多个数据框
【发布时间】:2019-12-09 05:56:29
【问题描述】:

我已经导入了一个包含多个工作表的 excel 文件。这是一种列表格式。

names(mysheets)
#[1] "test_sheet1" "test_sheet2"

Test_sheet1 和 test_sheet2 具有不同的矩阵。

我必须将每个工作表作为单独的数据框。

如果手动执行,代码将如下所示:

s_1 <- data.frame(mysheets[1])
s_2 <- data.frame(mysheets[2])

我尝试编写一个函数来完成它,因为我有很多 excel 文件,每个文件都有多个工作表

功能

p_fun <- function (y) {
for (s_i in 1:2) {
  for (i in 1:2) {
    s_i<- data.frame(y[i])
      return(s_i) }}}

它没有正常工作。 如果有人可以提供帮助,请不胜感激。

【问题讨论】:

    标签: r list function dataframe


    【解决方案1】:

    您可以使用mget 获取对象,然后将它们更改为data.frame

    list_df <- lapply(mget(names(mysheets)), data.frame)
    

    如果您希望它们作为单独的数据框,我们可以这样做

    names(list_df) <- paste0('s_', seq_along(list_df))
    list2env(list_df, .GlobalEnv)
    

    【讨论】:

    • 嗨,第一行使用mget,我收到了这个错误'mget(mysheets) 中的错误:第一个参数无效'。
    • @user3624948 你需要list_df &lt;- lapply(names(mysheets), data.frame) 吗?
    【解决方案2】:

    如果我们在for 循环中这样做,我们可以使用assign

    for(i in seq_along(mysheets)) assign(paste0("s", i), data.frame(mysheets[i]))
    

    【讨论】:

      猜你喜欢
      • 2020-04-17
      • 2022-11-14
      • 1970-01-01
      • 2021-03-22
      相关资源
      最近更新 更多