Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
管道后面跟着.var进入函数,为什么这不起作用?_R_Dplyr_Magrittr - Fatal编程技术网

管道后面跟着.var进入函数,为什么这不起作用?

管道后面跟着.var进入函数,为什么这不起作用?,r,dplyr,magrittr,R,Dplyr,Magrittr,有人能告诉我为什么示例1不起作用而示例2起作用吗? (我将数据集导入均值函数,但只需要一个变量, 但如果我先进行选择并将结果导入管道,则没有问题) NA 警告消息: 默认值(.$萼片长度): 参数不是数字或逻辑:返回NA 如果你解开你的代码管道 iris %>% mean(.$Sepal.Length) 变成 mean(iris, iris$Sepal.Length) 本质上,您正试图将mean应用于data.frame,但没有方法这样做 非管道的等效物 iris %>% .$S

有人能告诉我为什么示例1不起作用而示例2起作用吗? (我将数据集导入均值函数,但只需要一个变量, 但如果我先进行选择并将结果导入管道,则没有问题)

NA
警告消息:
默认值(.$萼片长度):
参数不是数字或逻辑:返回NA


如果你解开你的代码管道

iris %>% mean(.$Sepal.Length)
变成

mean(iris, iris$Sepal.Length)
本质上,您正试图将
mean
应用于
data.frame
,但没有方法这样做

非管道的等效物

iris %>% .$Sepal.Length %>% mean()

还有一种数值向量的
平均值
方法


请记住,在管道中,管道左侧的整个对象被传递到右侧的第一个参数(除非另有
arg=。
表示)。尝试只传递对象的一部分往往不会很好地工作。

如果您取消管道化代码

iris %>% mean(.$Sepal.Length)
变成

mean(iris, iris$Sepal.Length)
本质上,您正试图将
mean
应用于
data.frame
,但没有方法这样做

非管道的等效物

iris %>% .$Sepal.Length %>% mean()

还有一种数值向量的
平均值
方法



请记住,在管道中,管道左侧的整个对象被传递到右侧的第一个参数(除非另有
arg=。
表示)。试图只传递对象的一部分往往效果不太好。

您可以使用
summary
应用函数,即
iris%>%summary(val=mean(Sepal.Length))%>%。$val
谢谢@akrun,但我实际上并没有想办法将均值函数应用到我的数据帧中,第二部分是,但是想知道为什么版本1不起作用,而版本2不起作用,我猜它是在计算
$Sepal.Length
mean
之前对
向量
矩阵
起作用。您还可以检查
iris%>%mean()
这是一个有趣的想法@akrun!实际上,带有
iris%>%mean()
的错误消息看起来是一样的。所以求值的顺序是先平均,然后是点?@akrun我打赌在
中没有必要使用
,但是没有R来测试。你可以使用
摘要
来应用函数,即
虹膜%>%摘要(val=平均值(萼片长度))%>%。$val
谢谢@akrun,但我并不是在寻找一种将均值函数应用于我的数据帧的方法,第二部分是这样的,而是想知道为什么版本1不起作用,而版本2不起作用。我想它是在
$Sepal.Length
mean
向量
矩阵
起作用之前计算均值的。您还可以检查
iris%>%mean()
这是一个有趣的想法@akrun!实际上,带有
iris%>%mean()
的错误消息看起来是一样的。因此,评估的顺序是先平均,然后是点?@akrun我打赌在
中没有必要使用
,但没有R进行测试。对,在magrittr样式的管道中,它可能是
虹膜%$%Sepal.Length%>%平均值
哦,我多么喜欢
magrittr
。我需要更多地学习使用
%%$%
。(我因使用
iris%%>%%
$(萼片长度)而有罪)`%%>%mean`,这看起来太错误了。谢谢@Benjamin!有点奇怪,
%%.$var
被表示为
df,df$var
。我经常求助于magrittr,@docendodiscimus来完成这类操作,但这会破坏命令链中的流程:
df%%>%filter(df)%%>%select(df)%%$%mean(var)
没错,在magrittr风格的管道中,它可能是
虹膜%$%Sepal.Length%%>%意思是
哦,我多么喜欢
magrittr
。我需要学会更多地使用
%$%
。(我对使用
虹膜%>%
$(Sepal.Length)感到内疚)`%%>%mean`,这看起来太错误了。谢谢@Benjamin!有点奇怪,
%%.$var
被表示为
df,df$var
。我经常求助于magrittr,@docendodiscimus来完成这类操作,但这会破坏命令链中的流程:
df%%>%filter(df)%%>%select(df)%%$%mean(var)