如果我有一个数据框列表
my_list = list(data, data2, data3)
Run Code Online (Sandbox Code Playgroud)
我想为每个填充了该数据框名称的列添加一列
column1 column2 new_column
12 27 data
27 987 data
378 1234 data
Run Code Online (Sandbox Code Playgroud)
,我该怎么办呢?我希望集合中的所有DF都保留其原始名称,但也要填充列.
我试过了:
my_list = lapply(my_list, function(DF){
DF$new_column <- DF
DF
})
Run Code Online (Sandbox Code Playgroud)
但它不会在函数中的列表中运行.
我错过了什么?谢谢
Dav*_*urg 11
您的列表未命名.您可以在创建时手动命名
my_list = list(data = data, data2 = data2, data3 = data3)
Run Code Online (Sandbox Code Playgroud)
或者,如果您有许多数据集,则可以使用mget和ls组合
my_list <- mget(ls(pattern = "^data$|^data\\d+$"))
Run Code Online (Sandbox Code Playgroud)
后来,只需使用 Map
my_list <- Map(cbind, my_list, new_clumn = names(my_list))
my_list
# $data
# column1 column2 new_clumn
# 1 12 27 data
# 2 27 987 data
# 3 378 1234 data
#
# $data2
# column1 column2 new_clumn
# 1 12 27 data2
# 2 27 987 data2
# 3 378 1234 data2
#
# $data3
# column1 column2 new_clumn
# 1 12 27 data3
# 2 27 987 data3
# 3 378 1234 data3
#If you want to put the data sets back to the global environment you can use `list2env`
#list2env(my_list, .GlobalEnv)
#Please Note that it is usually not the preffered practice to move data frames to the global environment and back. It is preferred to store all you data sets in list from the very beginning and manipulating them within the list using functions such as `Map`, `lapply`, etc.
Run Code Online (Sandbox Code Playgroud)