在R 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) 这是一条我不明白的错误信息 当我不确定可能得到

我正在学习在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)
这是一条我不明白的错误信息


当我不确定可能得到的输出类型时,我认为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