下面的代码创建了一个函数和一个向量
library(tidyverse)
multiply_column <- function(data, column_name, lambda) {
new_column_name <- paste0(column_name, "_multiplied_", lambda)
data <- data %>%
mutate(!!new_column_name := !!sym(column_name) * lambda)
return(data)
}
lambda_values <- c(0.5, 0.75, 0.9)
字符串
这是我想要的输出-
mpg cyl disp hp drat wt qsec vs am gear carb mpg_0.5 mpg_0.75 mpg_0.9
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21 6 160 110 3.9 2.62 16.5 0 1 4 4 10.5 15.8 18.9
2 21 6 160 110 3.9 2.88 17.0 0 1 4 4 10.5 15.8 18.9
3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 11.4 17.1 20.5
4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1 10.7 16.0 19.3
5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2 9.35 14.0 16.8
6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1 9.05 13.6 16.3
7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4 7.15 10.7 12.9
8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2 12.2 18.3 22.0
9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2 11.4 17.1 20.5
10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4 9.6 14.4 17.3
型
如何使用R中purrr
包中的任何map变体来实现这一点?本质上,我想根据向量中的lambda值来改变新列。
4条答案
按热度按时间cgyqldqp1#
这是它的功能,已更正。
字符串
创建于2023-07-14带有reprex v2.0.2
py49o6xq2#
一个简单的方法:
字符串
tjrkku2a3#
或者请检查下面的代码
字符串
创建于2023-07-14带有reprex v2.0.2
型
oyxsuwqo4#
我已经为这个用例做了一个名为'dplyover'的包(它不在CRAN上)。其中一个核心函数是
over()
,它的行为与dplyr::across()
类似,但用于向量。.names
参数使您可以完全控制如何命名新列:字符串
当使用'purrr'包时,我们可以使用被取代的函数
map_dfc()
来模拟这种行为。但是,我们必须提前根据输入向量的名称手动命名新列,使用set_names()
:型
创建于2023-07-15带有reprex v2.0.2
在这两种情况下,我认为一个单独的自定义函数
multiply_columns()
是没有必要的给予代码已经很干净了。