Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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
没有适用于'的方法;tbl#u vars';适用于“类”的对象;c(';fseq';,';函数';);使用R管时_R_Dplyr_Magrittr - Fatal编程技术网

没有适用于'的方法;tbl#u vars';适用于“类”的对象;c(';fseq';,';函数';);使用R管时

没有适用于'的方法;tbl#u vars';适用于“类”的对象;c(';fseq';,';函数';);使用R管时,r,dplyr,magrittr,R,Dplyr,Magrittr,在中, iris%>%左加入(iris%>%分组依据(物种)%>%总结(N=N())是答案的一部分 我将此脚本翻译为: iris%%>%{left_join(,.%>%group_by(Species)%%>%summary(N=N())},但出现错误: Error in UseMethod("tbl_vars") : no applicable method for 'tbl_vars' applied to an object of class "c('f

在中,
iris%>%左加入(iris%>%分组依据(物种)%>%总结(N=N())
是答案的一部分

我将此脚本翻译为:
iris%%>%{left_join(,.%>%group_by(Species)%%>%summary(N=N())}
,但出现错误:

Error in UseMethod("tbl_vars") : 
  no applicable method for 'tbl_vars' applied to an object of class "c('fseq', 'function')"
我认为两个脚本是相等的,是什么导致了错误?

试试这只小猫:

iris %>% left_join(x = ., y = {.} %>% group_by(Species) %>% summarise(N=n()))

我们可以通过使用
add\u count

library(dplyr)
iris %>%
      add_count(Species)

如果我们使用的是
%>%
,建议不要在流中插入
{}
太麻烦,而是可以

iris %>% 
     group_by(Species) %>%  # grouping done
     summarise(N = n()) %>%  # get summarised count
     right_join(iris, .)  # right or left join
这条链使它更容易理解。正如其他人所指出的,有一种方法可以通过将其包装在
{}
中来实现这一点,但是,这也会破坏链接的整个目的。

这可能是一个问题,因为它似乎将
%>%…
序列评估为其他内容:

库(dplyr)
虹膜%>%
左联合({
打印(%>%
变异(新的=5L))
},
复制=真)
#>具有以下组件的功能顺序:
#> 
#>  1. 变异(,新=5L)
#> 
#>使用“函数”提取单个函数。
#>as.data.frame.default(y)中出错:无法将类“c”(“fseq”,“function”)”强制为data.frame
您可能希望向Github报告问题,或者我可以在Github上跟进问题-不确定这是更多还是更多。我以前用过类似的管子。正如@duck所指出的,它似乎将
{.}
包裹在点周围,以逃避正在发生的任何事情

iris%>%
{
{.}%>%
组别(种类)%>%
汇总(N=N())
}
还有。。。不可避免的
数据。表
备选方案:

库(data.table)
dt=原始数据表(iris)
dt[,N:=.N,by=物种]
dt
#>萼片。长萼片。宽花瓣。长花瓣。宽种N
#>1:5.1 3.5 1.4 0.2刚毛50
#>2:4.9 3.0 1.4 0.2刚毛50
#>3:4.7 3.2 1.3 0.2刚毛50
#>4:4.6 3.1 1.5 0.2刚毛50
#>5:5.0 3.6 1.4 0.2刚毛50
#>  ---                                                               
#>146:6.7 3.0 5.2 2.3弗吉尼亚州50
#>147:6.3 2.5 5.0 1.9弗吉尼亚州50
#>148:6.53.05.22.0弗吉尼亚州50
#>149:6.2 3.4 5.4 2.3弗吉尼亚州50
#>150:5.9 3.0 5.1 1.8弗吉尼亚州50

如果要创建一个新列,您可以执行
iris%>%添加计数(物种)
谢谢。我不熟悉github,请让Hadley知道这一点。请看这里:问题现已解决。我猜这是通过设计来使用管道创建函数的。