r语言 - 如何将值向量作为突变的参数传递?



我正在编写一个代码,该代码有望将数据框的每一列提高到某个指数。

我尝试使用mutate_allfunction(x,a) x^a应用于数据帧的每一列,但我在从预定义的向量传递a值时遇到问题。

powers <- c(1,2,3)
df <- data.frame(v1 = c(1,2,3), v2 = c(2,3,4), v3 = c(3,4,5))
df %>% mutate_all(.funs, ...)

我正在寻求有关如何编写mutate_all参数的帮助,以便可以将powers的元素应用于每列的函数。

我希望输出是一个数据框,分别(1,2,3),(4,9,16),(27,64,125)列。

我们可以在基数R中使用Map

df[] <- Map(`^`, df, powers)

map2purrr

purrr::map2_df(df, powers, `^`)

您也可以从base R尝试sweep()

sweep(df, 2, powers, "^")
v1 v2  v3
1  1  4  27
2  2  9  64
3  3 16 125

base R中,我们可以复制"幂"以使长度相同,然后应用函数

df ^ powers[col(df)]
#   v1 v2  v3
#1  1  4  27
#2  2  9  64
#3  3 16 125

最新更新