【发布时间】:2020-08-12 07:50:01
【问题描述】:
我有一个函数可以将特定函数应用于数据框中的多个列。这些函数中的每一个都是唯一的,并且只能应用于该列。
convert_columns <- function(df) {
df %>% mutate(
a = convert_a(a),
b = convert_b(b),
c = convert_c(c),
d = convert_d(d),
e = convert_e(e)
)
}
但是,用户可能会输入一个只有这些列的子集的数据框(例如,只有 a、b 和 c。我想要 mutate 的函数列 a、b 和 c 如果这些列存在于输入的数据框中并忽略列 d 和 e。
我试过了
convert_columns <- function(df) {
df %>% mutate(across(any of(),
a = convert_a(a),
b = convert_b(b),
c = convert_c(c),
d = convert_d(d),
e = convert_e(e)
))
}
和
convert_columns <- function(df) {
df %>% mutate(across(any of(
a = convert_a(a),
b = convert_b(b),
c = convert_c(c),
d = convert_d(d),
e = convert_e(e)
)))
}
这些不起作用。 tidyverse 语法中是否有一种简单的方法来完成我想要做的事情?在我的实际用例中,我有大约 150 列要进行变异。
【问题讨论】:
-
你真的对每一列应用不同的函数吗?
-
是的,它们都必须以不同的方式单独处理。