r - 使用 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"
?谢谢。
最终结果将如下所示:
解决方案
方法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]
}
推荐阅读
- c# - 保存类型的数据(字符串,列表
) 在视图状态中 - git - 当有不属于当前 PR 的提交时如何压缩提交
- c - 在 C 中读取文件时出现分段错误
- java - 如何修复“使用类路径资源中定义的名称创建 bean 时出错”?
- python - 如何在两个列表中找到紧密匹配的唯一元素?(这里使用距离函数)
- c++ - 在 VS2017 的库中查找符号
- python - 用于匹配子字符串的正则表达式
- reactjs - createBottomTabNavigator 保持安装堆栈
- javascript - 如何防止按键重复被触发 - JavaScript/jQuery
- java - 创建的通知android未显示在手机中