这看起来应该是这么简单......
我正在尝试创建一个循环来为事物分配列名称。但是,当我尝试将循环名称命名为列时,我只是得到空值。例如:
mtcars1 <- mtcars
mtcars2 <- mtcars
colnames(mtcars2) <- paste0(colnames(mtcars), "2")
codebook <- for(x in 1:2){
colnames(paste0("mtcars",x))
} %>% reduce(full_join)
最佳答案
在full_join
中,没有by
。通常,by
会选取两者中常见的列名称。由于第二个数据集列都是通过在末尾附加 2
进行修改的,所以这是行不通的。在这里,我们指定了 by
和列名,以便它可以工作。
library(dplyr)
library(purrr)
mget(paste0("mtcars", 1:2)) %>%
reduce(full_join, by = c("gear" = "gear2"))
此外,paste
步骤仅返回字符串中的对象名称,我们需要get
(如果是单个数据集)或mget
(如果超过one - 返回值列表)
for(x in 1:2) print(colnames(get(paste0("mtcars", x))))
[1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
[1] "mpg2" "cyl2" "disp2" "hp2" "drat2" "wt2" "qsec2" "vs2" "am2" "gear2" "carb2"
关于r - 循环获取代码簿打印 null 的列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74381169/