管道后跟 .$var 到函数中,为什么这不起作用?
pipe followed by .$var into function, why doesnt this work?
有人能告诉我为什么示例 1 不起作用而示例 2 有效吗?
(我将数据集通过管道传输到 mean 函数中,但只需要一个变量,
但是如果我先进行选择然后通过管道传输结果就没有问题)
iris %>% mean(.$Sepal.Length)
NA
Warning message:
In mean.default(., .$Sepal.Length) :
argument is not numeric or logical: returning NA
iris %>% .$Sepal.Length %>% mean()
5.843333
如果您取消管道化您的代码
iris %>% mean(.$Sepal.Length)
变成
mean(iris, iris$Sepal.Length)
本质上,您正在尝试将 mean
应用于 data.frame
,但没有方法可以做到这一点。
的非管道等效项
iris %>% .$Sepal.Length %>% mean()
是
mean(iris$Sepal.Length)
还有 一种用于数值向量的 mean
方法。
请记住,在管道中,管道左侧的整个对象都传递给右侧的第一个参数(除非用 arg = .
表示)。尝试仅传递对象的一部分往往效果不佳。
有人能告诉我为什么示例 1 不起作用而示例 2 有效吗? (我将数据集通过管道传输到 mean 函数中,但只需要一个变量, 但是如果我先进行选择然后通过管道传输结果就没有问题)
iris %>% mean(.$Sepal.Length)
NA
Warning message:
In mean.default(., .$Sepal.Length) :
argument is not numeric or logical: returning NA
iris %>% .$Sepal.Length %>% mean()
5.843333
如果您取消管道化您的代码
iris %>% mean(.$Sepal.Length)
变成
mean(iris, iris$Sepal.Length)
本质上,您正在尝试将 mean
应用于 data.frame
,但没有方法可以做到这一点。
的非管道等效项
iris %>% .$Sepal.Length %>% mean()
是
mean(iris$Sepal.Length)
还有 一种用于数值向量的 mean
方法。
请记住,在管道中,管道左侧的整个对象都传递给右侧的第一个参数(除非用 arg = .
表示)。尝试仅传递对象的一部分往往效果不佳。