我有一個資料框架串列,每個資料框架都有1個名為 "a "的列 我想重命名每個資料框架的 "a "列,在 "a "列后面粘貼資料框架的名稱。 下面是這個例子。
green <- data. frame(a=c(1, 2。 3, 4, 5))
> 綠色
a
1 1
2 2
3 3
4 4
5 5
yellow <- data. frame(a=c(6。 7。 8, 9。 10))
black <- data. frame(a=c(11。 12。 13, 14, 15))
my_list < - list(green=green,
黃色=黃色,
黑色=黑色)
names(my_list)
[1] "綠色" "黃色" "黑色"
我想要的結果應該是:
> green
a_green
1 1
2 2
3 3
4 4
5 5
> yellow
a_yellow
1 6
2 7
3 8
4 9 9
5 10
以此類推...
我試圖用lapply來做這件事,但我不明白是否有什么問題......
我試圖用lapply來做這件事。
my_list < - lapply(my_list,/span> function(x)
colnames(x)/span>=paste(colnames(x)。 names(x)。 sep = "_"))
uj5u.com熱心網友回復:
這里有幾個選項 -
tidyverse -library(dplyr)
library(purrr)
imap(my_list, ~. x %> % rename_with(function(x)粘貼(x。 . y, sep = '_')。 1))
#$green
# a_green
#1 1
#2 2 #2 2
#3 3 #3 3
#4 4 4
#5 5 #5
#$yellow[/span
# a_yellow $yellow
#1 6
#2 7 #2 7
#3 8 #3 8
#4 9 #4 9
#5 10 #5 10
#$black
# a_black # a_black
#1 11 #1 11
#2 12 #2 12
#3 13 #3 13
#4 14 #3 13
#5 15 #5
或者在基礎R中 -
Map(function(x, y) {
names(x)[1] < -粘貼(names(x)[1]。 y, sep = '_')
x
}, my_list。 names(my_list))
如果你在每個資料框架中只有1列,你可以簡化這個程序,就像例子中一樣。
Map(setNames。 my_list, paste('a/span>, names(my_list)/span>。 sep = '_'))
uj5u.com熱心網友回復:
你可以使用purrr::imap
library(tidyverse)
黑色<- tibble(a = 1。 10)
黃色<- tibble(a = 11。 21)
list("black" = black。 "yellow" = yellow) %> %
imap((x。 y){
x %>%。
set_names(glue:: glue("a_{y}"))
})
#> $black
#> # A tibble: 10 x 1
#> a_black
#> <int>/span>
#> 1 1
#> 2 2
#> 3 3
#> 4 4
#> 5 5
#> 6 6
#> 7 7
#> 8 8
#> 9 9
#> 10 10
#>
#> $yellow
#> # A tibble: 11 x 1
#> a_yellow
#> <int>/span>
#> 1 11
#> 2 12
#> 3 13
#> 4 14
#> 5 15
#> 6 16
#> 7 17
#> 8 18
#> 9 19
#> 10 20
#> 11 21
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/334042.html
標籤:
下一篇:R模擬具有唯一觀測值的樣本
