我正在处理多年来测量相同变量的几个数据集。我试图为每个数据集添加一个年变量,但更一般地说,我想循环遍历向量中的元素,并将每个变量添加为数据帧列表中的新列。这个问题与我的类似,但我想迭代地将向量中的每个元素添加到相应的数据帧作为新列: R - New variables over several data frames in a loop
此处的示例数据:
year <- c(1:3)
data1 <- data.frame(var1 = c(1:5))
data2 <- data.frame(var1 = c(11:15))
data3 <- data.frame(var1 = c(21:25))
data_list <- list(data1 = data1, data2 = data2, data3 = data3)
我想这样做,但想想可能还有一些方法可以循环(或者说是la laly)我还没有想到:
data1$year <- year[1]
data2$year <- year[2]
data3$year <- year[3]
由于我有多年和数据集可以合作,因此拥有更高效的解决方案会很棒。谢谢!
答案 0 :(得分:0)
基于@@ thelatemail评论的完整答案:
函数Map(cbind, data_list, year=year)
应该可以完成这项工作。逐步:
Map
函数指示列表中元素的循环cbind
附加新创建的列year = years
基于向量year
中的元素创建名为years
的新列有一个虚拟的例子:
# vector of values you wish to add
years <- c(1:3) # changed to plural to indicate vector of values rather than single value
# make dummy list of dataframes
data1 <- data.frame(var1 = c(1:5))
data2 <- data.frame(var1 = c(11:15))
data3 <- data.frame(var1 = c(21:25))
data_list <- list(data1 = data1, data2 = data2, data3 = data3)
# Loop through list of dataframes and to each dataframe add a new column
Map(cbind, data_list, year=years)
您想要的输出:
$`data1`
var1 year
1 1 1
2 2 1
3 3 1
4 4 1
5 5 1
$data2
var1 year
1 11 2
2 12 2
3 13 2
4 14 2
5 15 2
$data3
var1 year
1 21 3
2 22 3
3 23 3
4 24 3
5 25 3