gpt4 book ai didi

r - 如何将列表名称添加到 df 作为数据框的列

转载 作者:行者123 更新时间:2023-12-04 19:01:33 25 4
gpt4 key购买 nike

是否有更好的方法将列表字段(通常为数据框)的名称添加为数据框列?
示例数据

df1 <- data.frame(x = 1:3, y = 3:5)
df2 <- data.frame(x = 1:3, y = 3:5)
df3 <- data.frame(x = 1:3, y = 3:5)

list = list()
list[["DF1"]] <- df1
list[["DF2"]] <- df2
list[["DF3"]] <- df3
它正在工作,但我想尽可能避免 for 循环。
 for (i in 1:length(list)) {
list[[i]][,"name"] <- names(list[i])
}
我正在尝试什么:
lapply(list, FUN = function(df){
df$anothername <- names(list$df) #This return colnames.
return(df)
})
我想得到的输出:
$DF1
x y name
1 1 3 DF1
2 2 4 DF1
3 3 5 DF1

$DF2
x y name
1 1 3 DF2
2 2 4 DF2
3 3 5 DF2

$DF3
x y name
1 1 3 DF3
2 2 4 DF3
3 3 5 DF3

最佳答案

我们可以使用 Mapcbind每个data.framelist与相应的 namelist .

Map(cbind, list, name=names(list))
#$DF1
# x y name
#1 1 3 DF1
#2 2 4 DF1
#3 3 5 DF1

#$DF2
# x y name
#1 1 3 DF2
#2 2 4 DF2
#3 3 5 DF2

#$DF3
# x y name
#1 1 3 DF3
#2 2 4 DF3
#3 3 5 DF3

更好的选择是 rbindlist创建单个数据集。
library(data.table)
rbindlist(list, idcol="name")

关于r - 如何将列表名称添加到 df 作为数据框的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36641875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com