我想使用dplyr mutate_at函数将函数应用于数据框中的多个列,其中函数输入直接应用的列以及数据帧中的另一列.
作为一个具体的例子,我想改变以下数据帧
# Example input dataframe
df <- data.frame(
x = c(TRUE, TRUE, FALSE),
y = c("Hello", "Hola", "Ciao"),
z = c("World", "ao", "HaOlam")
)
Run Code Online (Sandbox Code Playgroud)
与mutate_at调用类似于此
df %>%
mutate_at(.vars = vars(y, z),
.funs = ifelse(x, ., NA))
Run Code Online (Sandbox Code Playgroud)
返回一个看起来像这样的数据框
# Desired output dataframe
df2 <- data.frame(x = c(TRUE, TRUE, FALSE),
y_1 = c("Hello", "Hola", NA),
z_1 = c("World", "ao", NA))
Run Code Online (Sandbox Code Playgroud)
所需的mutate_at呼叫类似于以下呼叫mutate:
df %>%
mutate(y_1 = ifelse(x, y, NA),
z_1 = ifelse(x, z, NA)) …Run Code Online (Sandbox Code Playgroud)