首页 > 解决方案 > as_mapper(.f, ...) 中的错误:找不到对象

问题描述

我有一个如下所示的数据框

# A tibble: 4 x 2
    iden date      
  <dbl> <date>    
1     1 2011-02-21
2     2 2013-03-11
3     3 NA        
4     4 NA 

我正在尝试执行以下命令

 data <- data %>%
      map(c(test, delta), as.name) %>%
      setNames(c("test", "delta"))

但我收到以下错误

as_mapper(.f, ...) 中的错误:找不到对象“iden”

但是,当我像下面这样重新编写上述命令时,我得到如下所示的输出

map(c(data$test, data$delta),as.name)
  1. 我可以知道为什么代码不适用于%>%运营商吗?

  2. 我可以知道为什么日期值更改为输出中的数字吗?

标签: rdataframedplyrpurrrlubridate

解决方案


我不清楚您在这里要做什么,但要回答您的问题-

  1. 我可以知道为什么代码不能与 %>% 运算符一起使用吗

因为这就是管道的工作方式。管道的左侧是右侧函数的第一个参数。所以当你这样做时

data %>% map(c(iden, date),as.name)

你实际上在做:

map(data, c(iden, date),as.name)

返回相同的错误。

as_mapper(.f,...)中的错误:找不到对象'iden'


对于第二个问题:

我可以知道为什么日期值更改为输出中的数字吗?

我不知道为什么,但日期在内部存储为天数1970-01-01,可以通过将日期更改为数字来验证。

as.numeric(data$date)
#[1] 15026 15775    NA    NA

您得到的输出是相似的数字。


推荐阅读