【问题标题】:Add values to data frames in list based on names根据名称向列表中的数据框添加值
【发布时间】:2015-05-06 12:29:36
【问题描述】:

我确定以前一定有人问过这个问题,但我找不到答案。

我有一个数据框列表,如下所示:

x  <- c(2, 3, 5)
y <- c("a", "b", "c")
df1 <- data.frame(x, y)

x <- c(3, 6, 9)
y <- c("a", "b", "c")
df2 <- data.frame(x, y)

ls <- list(df1, df2)
names(ls) <- c("example1", "example2")

我想做的是根据数据框的名称创建一个新列 text_id。我可以为特定的数据框执行此操作,如下所示:

ls[[1]]$text_id <- names(ls[1])

我以为我了解lapply() 的工作原理,但我显然不明白,因为这不起作用:

ls2 <- lapply(ls, function(x){
ls[[x]]$text_id <- names(ls[x])
return(ls2)})

相反,我得到Error in ls[x] : invalid subscript type 'list'

我在子集之前尝试了as.data.frame,但这也不起作用。而且我也不确定返回的值是否应该是ls2,但我还没有到那一步。

【问题讨论】:

    标签: r list dataframe lapply


    【解决方案1】:

    你可以试试Map

    Map(cbind, ls, text_id=names(ls))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 2022-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多