Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将相同的列名应用于多个TIBLE_R_Purrr - Fatal编程技术网

R 将相同的列名应用于多个TIBLE

R 将相同的列名应用于多个TIBLE,r,purrr,R,Purrr,我想使用names函数将相同的列名应用于多个数据帧,所有数据帧都具有相同的列数。当然,通过为每个数据帧调用名称,我可以用错误的方法来实现这一点,但我希望这样做是正确的。以下是设置: library(tidyverse) df1 <- tibble(1,2,3,4,5) df2 <- tibble(6,7,8,9,10) df3 <- tibble(11,12,13,14,15) df4 <- tibble(16,17,18,19,20) column_names &l

我想使用
names
函数将相同的列名应用于多个数据帧,所有数据帧都具有相同的列数。当然,通过为每个数据帧调用
名称
,我可以用错误的方法来实现这一点,但我希望这样做是正确的。以下是设置:

library(tidyverse)

df1 <- tibble(1,2,3,4,5)
df2 <- tibble(6,7,8,9,10)
df3 <- tibble(11,12,13,14,15)
df4 <- tibble(16,17,18,19,20)

column_names <- c("Alpha","Bravo","Charlie","Delta","Echo")
tibbles_list <- (c("df1","df2","df3","df4"))
库(tidyverse)

df1tibbles\u列表
只是对象标识符作为字符串的向量。使用
mget
,我们在
列表中获取objects的值,使用
map
循环列表,并使用
rename\u all
更改名称

lst1 <- map(mget(tibbles_list), ~ .x %>%
                   rename_all(~ column_names))
list2env(lst1, .GlobalEnv)
注意:最好将其保存在
列表中,并且不要修改全局环境中的对象。首先,如果您使用的是数据帧列表,而不是需要从环境中拉出的数据帧名称列表,那么您的情况会好得多。如果你在这件事上有选择,那太好了;如果没有,则可以将这些数据帧复制到单个列表中

这篇文章有7个答案,其中有各种各样的方法和原因,包括如果你没有从一个列表开始的奢侈的话

完成后,您可以使用基本的
setNames
(或者
rlang
wrapper
set\u names
,在这里并不真正需要它的能力)设置名称,它本身就是
名称的包装器。使用
purrr
映射函数,或对基本版本使用
lappy

库(dplyr)
dfs%
purrr::map(~setNames(,列名称))
#> [[1]]
#>#A tible:1 x 5
#>阿尔法布拉沃查理三角回波
#>         
#> 1     1     2       3     4     5
#####削减剩余产量
lappy(dfs,函数(x)集合名(x,列名称))
#输出同上
由于
setNames
names
的包装器:

lappy(dfs,函数(x){

names(x)第一个示例失败--抱怨没有找到模式“function”的“Object'Alpha'”--但第二个示例有效!谢谢!@jbfink抱歉,应该有
~
立即尝试@akrun还有一个问题--tibble实际上没有“保存”“当我执行映射函数时——执行这些映射中的任何一个,然后直接调用TIBLE(例如,只需在控制台中键入“df1”)显示旧列名。我如何修复它?@jbfink我在开会。忘记了tibbles_列表是一个字符向量。尝试使用
list2env
更新会议。为什么你要列出数据帧的名称,而不仅仅是数据帧本身?例如
tibbles_列表Hi camille--不知道。我可能正在做他犯了很多错误。
lst1 <- map(mget(tibbles_list), ~ .x %>%
                   rename_all(~ column_names))
list2env(lst1, .GlobalEnv)
map(mget(tibbles_list), ~ .x %>% 
            set_names(column_names))