我一直在努力使用dplyr将自定义函数应用于小标题列表。以下代码段可以使用for循环正常运行:
for (Entry<AClass, Future<String>> a : b.entrySet()) {
根据purrr文档,df <- list(as_tibble(head(mtcars[, 1:2])), as_tibble(tail(mtcars[, 1:2])), as_tibble(mtcars[13:18, 1:2]))
for (d in seq_along(df)) {
df[[d]] <- df[[d]] %>% rename_all(toupper)
}
:“(...)将函数迭代地应用于列表或向量的每个元素”,但会引发错误:
map
我想使用map应该有可能,但是显然我缺少了一些东西:/
注意:这接近Rename Columns of Data.frame in list,但是我在问如何使用tidyverse(特别是map(df, rename_all(toupper))
Error in UseMethod("tbl_vars") :
no applicable method for 'tbl_vars' applied to an object of class "function"
)而不是基于R的软件包来实现它。
答案 0 :(得分:1)
因为OP要求我们使用purrr
函数来提供解决方案
library(purrr); library(dplyr)
map(df, .f = ~ rename_all(.x, toupper))
# or map(df, .f = ~ set_names(.x, toupper(names(.x))))
#[[1]]
# A tibble: 6 x 2
# MPG CYL
#* <dbl> <dbl>
#1 21 6
#2 21 6
#3 22.8 4
#4 21.4 6
#5 18.7 8
#6 18.1 6
#[[2]]
# ...
OP的解决方案不起作用的原因是,rename_all
期望将data.frame
/ tibble
作为第一个参数。