gpt4 book ai didi

R - 通过循环遍历向量中的元素将列添加到列表中的数据帧

转载 作者:行者123 更新时间:2023-12-02 03:10:38 26 4
gpt4 key购买 nike

我正在处理多个数据集,这些数据集多年来测量相同的变量。我正在尝试向每个数据集添加一个年份变量,但更一般地说,我想遍历向量中的元素并将每个元素添加为数据帧列表中的新列。这个问题与我的类似,但我想将向量中的每个元素作为新列迭代添加到相应的数据框中: 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)

我想这样做,但认为可能有一些循环(或重叠)的方法我还没有弄清楚:

data1$year <- year[1]
data2$year <- year[2]
data3$year <- year[3]

由于我有多年的工作经验和数据集,所以如果能有一个更高效的解决方案就好了。谢谢!

最佳答案

基于@@thelatemail 评论的完整答案:

函数 Map(cbind, data_list, year=year) 应该可以完成这项工作。一步一步:

  • Map 函数表示循环遍历列表中的元素
  • cbind 附加新创建的列
  • year = years 根据向量 years
  • 中的元素创建名为 year 的新列

有你的虚拟例子:

# 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

关于R - 通过循环遍历向量中的元素将列添加到列表中的数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40251202/

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