weightLogInfo_merged %>% + filter (Id == 6962181067 ) %>% + pull(WeightKg) %>% + max(WeightKg) - min(WeightKg)
我得到的错误:weightLogInfo_merged %〉% filter(Id == 6962181067)%〉% pull(WeightKg)%〉%出错:对象'WeightKg'未找到
gcuhipw91#
问题是WeightKg是数据集的一列。使用pull将从数据集中提取该列作为向量,但不会在环境中创建具有此名称的变量。而是将pull艾德向量直接传递到要应用的函数中。然而,当你想应用两个函数并计算差值时,你必须用花括号括起来,并使用.来指定最后一步的结果应该输送到哪里。使用基于mtcars的最小可重现示例。
WeightKg
pull
.
mtcars
library(dplyr, warn = FALSE) mtcars %>% filter(cyl == 4) %>% pull(mpg) %>% { max(.) - min(.) } #> [1] 12.5
第二种实现相同结果的方法是使用range()和diff():
range()
diff()
mtcars %>% filter(cyl == 4) %>% pull(mpg) %>% range() %>% diff() #> [1] 12.5
kknvjkwl2#
其他选项包括with
with
library(dplyr) mtcars %>% filter(cyl ==4) %>% with(., max(mpg) - min(mpg)) [1] 12.5
或者在summarise/reframe中创建输出
summarise/reframe
mtcars %>% filter(cyl ==4) %>% summarise(diff = max(mpg) - min(mpg)) %>% pull(diff) [1] 12.5
或者使用magrittr%$%运算符
magrittr
%$%
library(magrittr) mtcars %>% filter(cyl ==4) %$% (max(mpg) - min(mpg)) [1] 12.5
2条答案
按热度按时间gcuhipw91#
问题是
WeightKg
是数据集的一列。使用pull
将从数据集中提取该列作为向量,但不会在环境中创建具有此名称的变量。而是将pull
艾德向量直接传递到要应用的函数中。然而,当你想应用两个函数并计算差值时,你必须用花括号括起来,并使用.
来指定最后一步的结果应该输送到哪里。使用基于
mtcars
的最小可重现示例。第二种实现相同结果的方法是使用
range()
和diff()
:kknvjkwl2#
其他选项包括
with
或者在
summarise/reframe
中创建输出或者使用
magrittr
%$%
运算符