【发布时间】:2017-12-17 06:38:45
【问题描述】:
我有一个包含 12 个数据帧的列表:
m =list(X2016_kvish_1_10t, X2015_kvish_1_10t, X2014_kvish_1_10t,
X2013_kvish_1_10t, X2012_kvish_1_10t, X2011_kvish_1_10t,
X2010_kvish_1_10t, X2009_kvish_1_10t, X2008_kvish_1_10t)
X2007_kvish_1_10t, X2006_kvish_1_10t, X2005_kvish_1_10t)
我有一个包含 12 个向量的列表,称为 mean_values。来自str(mean_values)的输出:
List of 12
$ : Named num [1:168] 2848 2848 2848 2848 2848 ...
..- attr(*, "names")= chr [1:168] "a" "a" "a" "a" ...
$ : Named num [1:168] 2870 2870 2870 2870 2870 ...
..- attr(*, "names")= chr [1:168] "a" "a" "a" "a" ...
$ : Named num [1:168] 2911 2911 2911 2911 2911 ...
..- attr(*, "names")= chr [1:168] "a" "a" "a" "a" ...
$ : Named num [1:168] 3422 3422 3422 3422 3422 ...
..- attr(*, "names")= chr [1:168] "a" "a" "a" "a" ...
$ : NULL
$ : Named num [1:168] 2747 2747 2747 2747 2747 ...
..- attr(*, "names")= chr [1:168] "a" "a" "a" "a" ...
$ : Named num [1:168] 3234 3234 3234 3234 3234 ...
..- attr(*, "names")= chr [1:168] "a" "a" "a" "a" ...
$ : Named num [1:168] 3334 3334 3334 3334 3334 ...
..- attr(*, "names")= chr [1:168] "a" "a" "a" "a" ...
$ : Named num [1:168] 3440 3440 3440 3440 3440 3440 3440 3440 3440 3440 ...
..- attr(*, "names")= chr [1:168] "a" "a" "a" "a" ...
$ : Named num [1:168] 3327 3327 3327 3327 3327 ...
..- attr(*, "names")= chr [1:168] "a" "a" "a" "a" ...
$ : Named num [1:168] 3440 3440 3440 3440 3440 ...
..- attr(*, "names")= chr [1:168] "a" "a" "a" "a" ...
$ : Named num [1:168] 3497 3497 3497 3497 3497 ...
..- attr(*, "names")= chr [1:168] "a" "a" "a" "a" ...
我需要将每个向量添加到列表中每个 data.frame 的新列中。当我单独做时效果很好:
X2016_kvish_1_10t$mean_values = mean_values[[1]]
X2016_kvish_1_10t$mean_values = mean_values[[2]]
X2016_kvish_1_10t$mean_values = mean_values[[3]]
# ... until 12
但我需要找到一种方法一次性添加这些矢量。 我试过这个功能:
for(i in 1:length(m)){m[[i]]$means = mean_values[[i]]}
这个函数很好用,但只有当我打印整个数据框列表时。我需要找到一种方法将更改应用于原始日期帧,每个日期帧。
【问题讨论】:
-
它按您的预期工作。我刚刚在示例数据上尝试了您的代码:
df1 <- data.frame(v1=c(1,2),v2=c(3,4)); df2 <- data.frame(v1=c(2,2),v2=c(3,2)); df3 <- data.frame(v1=c(1,1),v2=c(4,4)); m=list(df1,df2,df3); mean_values <- list(c(5,5),c(6,6),c(7,7)); for(i in 1:length(m)){m[[i]]$means = mean_values[[i]]}; m. -
它可以工作,但更改似乎不在原始 data.frames 中。如何将此更改应用于原始 data.frames ?
-
为方便起见,我个人会将它们保留在列表中,但如果您希望它们退出,请尝试this answer 的解决方案-尝试
list2env(m, .GlobalEnv)。 -
@MichaelSpector - 哦,对了 - 你创建了
m作为一个未命名的列表。如果你这样做m = list(X2016_kvish_1_10t = X2016_kvish_1_10t, X2015_kvish_1_10t = X2015_kvish_1_10t, ...)它应该可以工作。 -
非常感谢!!!它有效 :) 我本来想给你买礼物的,但我猜你住在世界的另一端 :) 明天见,带着我的新问题,晚安