在R purrr中使用map()
我正在学习在purrr中使用map()函数族,但不明白为什么下面的函数可以工作在R purrr中使用map(),r,apply,tidyverse,purrr,R,Apply,Tidyverse,Purrr,我正在学习在purrr中使用map()函数族,但不明白为什么下面的函数可以工作 df <- data.frame(col1 = c(5,4,3), col2=c("a", "b", "c")) my_f <- function(v1){ output <- v1 + 1 return(output) } addone_v <- df$col1 %>% map_dbl(my_f) 这是一条我不明白的错误信息 当我不确定可能得到
df <- data.frame(col1 = c(5,4,3), col2=c("a", "b", "c"))
my_f <- function(v1){
output <- v1 + 1
return(output)
}
addone_v <- df$col1 %>%
map_dbl(my_f)
这是一条我不明白的错误信息
当我不确定可能得到的输出类型时,我认为map()是最安全的使用方法。如果我们要更新同一列,请在
mutate
library(dplyr)
library(purrr)
df %>%
mutate(col1 = map_dbl(col1, my_f))
注意:这里可能不需要任何循环(map
)
如果我们在
map
上应用函数,默认输出为列表
df$col1 %>%
map(my_f)
#[[1]]
#[1] 6
#[[2]]
#[1] 5
#[[3]]
#[1] 4
你的表现和你的一模一样吗?如前所述,我不了解您提供的错误。可能您没有将结果分配给
addone\u v
,而是分配给data.frame的一列?不清楚错误。什么是区域
等。您是说df$col1%>%map(my\u f)
返回您粘贴到问题中的错误消息?我也不能复制。我把名字空间搞砸了。在使用purrr::map()时有效这是一个更好的语法tho:{df$col1}%>%map(my_f)
似乎我有一个名称空间问题。当我尝试purr::map()@val时,我可以得到你的结果。val可能是你的ls()
可能有对象标识符作为map
,或者从不同的包中有相同的函数名,例如从maps
,没错-我在tidyverse
之后加载了maps
包。非常感谢。
df$col1 %>%
map(my_f)
#[[1]]
#[1] 6
#[[2]]
#[1] 5
#[[3]]
#[1] 4