为什么在rename_with中传递names(.)到forumla不起作用?

nuypyhwy  于 2023-01-03  发布在  其他
关注(0)|答案(1)|浏览(101)

不知道为什么第一行有错误,但第二行工作?我的理解是在公式中使用名称(.)告诉R在管道操作符之前使用数据。它似乎对.cols参数有效,但对公式无效。

iris%>%rename_with(~gsub("Petal","_",names(.)),all_of(names(.)))
iris%>%rename_with(~~gsub("Petal","_",names(iris)),all_of(names(.)))
vcirk6k6

vcirk6k61#

rename_with将一个函数应用于传递的 Dataframe 的 names。该函数应该是一个在给定名称向量的情况下返回更改后的名称的函数,因此语法要比您尝试的语法简单得多:

iris %>%
  rename_with(~ gsub("Petal", "_", .x))
#>   Sepal.Length Sepal.Width _.Length _.Width Species
#> 1          5.1         3.5      1.4     0.2  setosa
#> 2          4.9         3.0      1.4     0.2  setosa
#> 3          4.7         3.2      1.3     0.2  setosa
#> 4          4.6         3.1      1.5     0.2  setosa
#> 5          5.0         3.6      1.4     0.2  setosa
#> 6          5.4         3.9      1.7     0.4  setosa
#... etc

相关问题