首页 > 解决方案 > 使用 R 中数据框列表中的数据框名称附加一个新列

问题描述

l给定如下数据框列表:

l <- list(a = data.frame(a_1 = c(11, 12),
                        a_2 = c(13, 14)),
          b = data.frame(b_1 = c(21, 22),
                        b_2 = c(23, 24)),
          c = data.frame(c_1 = c(31, 32),
                          c_2 = c(33, 34)))
print(l)

出去:

在此处输入图像描述

现在我想new_col使用每个数据框的名称附加一个新列:

l[['a']]$new_col = 'a'
l[['b']]$new_col = 'b'
l[['c']]$new_col = 'c'

我想知道如何自动使用names(l)which为每个数据框附加列[1] "a" "b" "c"?谢谢。

最终结果将如下所示:

在此处输入图像描述

标签: rdataframedplyrplyr

解决方案


方法1:使用map2的tidyverse解决方案

library(tidyverse)
map2(l, names(l), ~ mutate(.x, new_col = .y))

输出:

$a
  a_1 a_2 new_col
1  11  13       a
2  12  14       a

$b
  b_1 b_2 new_col
1  21  23       b
2  22  24       b

$c
  c_1 c_2 new_col
1  31  33       c
2  32  34       c

方法二:for循环解决方案

l给出上述输出):

for(i in 1:length(names(l))) {
  l[[i]]$new_col <- names(l)[i]
}

推荐阅读