在R中使用purrr包的map函数时如何将第二个参数传递给函数
How to pass second parameter to function while using the map function of purrr package in R
对于一个可能非常简单的问题表示歉意。
我刚开始使用 R 中的 purrr 包,我正在努力尝试将第二个参数传递给函数。
library(dplyr)
library(purrr)
my_function <- function(x, y = 2) {
z = x + y
return(z)
}
my_df_2 <- my_df %>%
mutate(new_col = map_dbl(.x = old_col, .f = my_function))
这行得通,而且大多数情况下我不需要更改 y 的值,但是如果我必须通过 mutate & map 组合为 y 传递不同的值(比如 y = 3),语法是什么为了它?
非常感谢您!
我想你需要做的就是像这样修改 map_dbl
:
library(dplyr)
library(purrr)
df <- data.frame(a = c(2, 3, 4, 5.5))
my_function <- function(x, y = 2) {
z = x + y
return(z)
}
df %>%
mutate(new_col = map_dbl(.x = a, y = 3, .f = my_function))
a new_col
1 2.0 5.0
2 3.0 6.0
3 4.0 7.0
4 5.5 8.5
另一个想法是使用以下语法。
library(dplyr)
library(purrr)
# The function
my_function <- function(x, y = 2) {
z = x + y
return(z)
}
# Example data frame
my_df <- data_frame(old_col = 1:5)
# Apply the function
my_df_2 <- my_df %>%
mutate(new_col = map_dbl(old_col, ~my_function(.x, y = 3)))
my_df_2
# # A tibble: 5 x 2
# old_col new_col
# <int> <dbl>
# 1 1 4.
# 2 2 5.
# 3 3 6.
# 4 4 7.
# 5 5 8.
对于一个可能非常简单的问题表示歉意。
我刚开始使用 R 中的 purrr 包,我正在努力尝试将第二个参数传递给函数。
library(dplyr)
library(purrr)
my_function <- function(x, y = 2) {
z = x + y
return(z)
}
my_df_2 <- my_df %>%
mutate(new_col = map_dbl(.x = old_col, .f = my_function))
这行得通,而且大多数情况下我不需要更改 y 的值,但是如果我必须通过 mutate & map 组合为 y 传递不同的值(比如 y = 3),语法是什么为了它?
非常感谢您!
我想你需要做的就是像这样修改 map_dbl
:
library(dplyr)
library(purrr)
df <- data.frame(a = c(2, 3, 4, 5.5))
my_function <- function(x, y = 2) {
z = x + y
return(z)
}
df %>%
mutate(new_col = map_dbl(.x = a, y = 3, .f = my_function))
a new_col 1 2.0 5.0 2 3.0 6.0 3 4.0 7.0 4 5.5 8.5
另一个想法是使用以下语法。
library(dplyr)
library(purrr)
# The function
my_function <- function(x, y = 2) {
z = x + y
return(z)
}
# Example data frame
my_df <- data_frame(old_col = 1:5)
# Apply the function
my_df_2 <- my_df %>%
mutate(new_col = map_dbl(old_col, ~my_function(.x, y = 3)))
my_df_2
# # A tibble: 5 x 2
# old_col new_col
# <int> <dbl>
# 1 1 4.
# 2 2 5.
# 3 3 6.
# 4 4 7.
# 5 5 8.