【发布时间】:2017-06-08 21:57:28
【问题描述】:
我认为我缺少关于 R 如何评估事物的基本知识。考虑以下几点:
library("tidyverse")
dt0 <- tibble(x=1:10, y=11:20)
filter(dt0, 1==x) # Returns the first row
purrr::contains(list(1), 1) # TRUE
filter(dt0, purrr::contains(list(1), x)) # Returns NO rows
我尝试将 contains 包装在自定义函数中(没有变化),并添加了一个打印语句来尝试调试它,但它尽可能接近,即使 x 的值为 1(类仍然是数字),contains(list(1), x) 在过滤器之外返回 TRUE,但在其中返回 FALSE。
- 为什么?
可能相关,我不太明白如何将列传递给unique 之类的函数,但也可以传递给其他函数(比如我的自定义函数)。 (我知道您可以并且可以做到,但不是怎么可能。)我的自定义函数表现得好像它被多次调用,每个 x 值调用一次。不过,unique 必须拥有 所有 值,是吗?
-
unique和单参数函数如何同时作用于列?
【问题讨论】:
-
不确定 purrr::contains 的性质,但
purrr::contains(list(1), dt0$x[1])返回FALSE。尽管dt0$x[1]==1
标签: r function aggregate tidyverse