簡體   English   中英

從R中的列表中為多個數據框更改列

[英]mutate column for multiple dataframes from a list in r

我有12個data.frames的列表:

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]]}

此功能很好用,但僅當我打印整個數據幀列表時才有效。 我需要找到一種方法將更改應用於原始日期框架,每個一個。

盡管不知道您為什么要這么做...我想我得到了您想要的。

如果您列出的項目已命名,則可以嘗試:

for(i in 1:length(m)){
    assign(names(m)[i], m[[i]])
}

如果您的列表命名不方便,則可以這樣命名: names(m) <- ls()[grep(pattern = 'kvish', x = ls(), ignore.case = TRUE)]

如果您的數據幀是內存中kvish名稱中帶有kvish對象,則此方法將起作用。

但是您必須注意名稱的順序。 檢查ls()[grep(pattern = 'kvish', x = ls(), ignore.case = TRUE)] ,看看它的輸出順序是否與列表的數據幀相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM