如何将年份填充到R中的数据帧列表中

如何将年份填充到R中的数据帧列表中,r,function,lapply,R,Function,Lapply,我有一个包含11个数据帧的列表,希望在每个数据帧中创建一个新列,并在该列中填充年份为c(2005:2015)。问题是它在一个数据帧中对255行重复11项(年),因此显示错误。我想要的是,它不应该迭代数据帧中的行,而是迭代列表中的数据帧。所以第一个数据帧有255行年份,显示值2005,以此类推 我已经尝试了以下代码,但正如我所说的。它在dataframe中迭代,而我希望它在每个dataframe中只填充一个值,并在列表中迭代,而不是在下面的一个级别 tf2 <- lapply(tf2, fu

我有一个包含11个数据帧的列表,希望在每个数据帧中创建一个新列,并在该列中填充年份为
c(2005:2015)
。问题是它在一个数据帧中对255行重复11项(年),因此显示错误。我想要的是,它不应该迭代数据帧中的行,而是迭代列表中的数据帧。所以第一个数据帧有255行年份,显示值2005,以此类推

我已经尝试了以下代码,但正如我所说的。它在dataframe中迭代,而我希望它在每个dataframe中只填充一个值,并在列表中迭代,而不是在下面的一个级别

tf2 <- lapply(tf2, function(x) mutate(x, YEAR = c(2005:2015)))
基于@GSW建议的修改,我正在尝试这个

ChangeYears = function(x){
  for(i in 1:11) {
    x[[i]] = cbind(x[[i]], Year=2004+i) }

}

lapply(tf2, ChangeYears)
但是我得到了以下错误。
.subset2(x,i,exact=exact)中的错误:下标超出范围

## A list of 11 data frames
tf2 = list()
for(i in 1:11) {
    tf2[[i]] = data.frame(x = rnorm(10), y = rnorm(10)) }


## Add a year column to each. 
for(i in 1:11) {
    tf2[[i]] = cbind(tf2[[i]], Year=2004+i) }
补充: 这将修改您建议的函数,使其正常工作

ChangeYears = function(x){
  for(i in 1:11) {
    x[[i]] = cbind(x[[i]], Year=2004+i) }
  x
}

tf2 = ChangeYears(tf2)

请添加样本数据、当前和预期输出(即复制和粘贴它们(应该)的外观)。对数据使用
dput
。有关详细信息,请参阅。示例数据无效,因为数据大小为18.7 MB。请阅读上述帖子并更新您的帖子。也许只有我一个人,但我认为有了样本数据和当前及预期输出的视觉效果,就更容易理解目标是什么。你能帮我为新事物获取正确的代码吗?我遇到了上面提到的一些错误。请参阅。执行无错误,但未创建
Year
列。响应太长,无法发表评论。添加到答案。我在代码中错过的最后一件事是我的错误。谢谢它工作得很好。
ChangeYears = function(x){
  for(i in 1:11) {
    x[[i]] = cbind(x[[i]], Year=2004+i) }
  x
}

tf2 = ChangeYears(tf2)