使用管道的正确方法是什么?

时间:2020-01-28 20:47:51

标签: r dplyr pipe

关于R中管道的奇闻异闻,以至于我决定现在该学习如何使用它们了。 我想对表进行操作,然后添加一列。它可以作为单独的行使用,但是当我尝试使用管道时则不行。有人可以教育我使用管道的方式有什么问题吗?

modtable <- table - mean(table$blank[1:3]) %>%
    add_column(n=1)

谢谢!

以上返回错误:

Error in if (nrow(df) != nrow(.data)) { : argument is of length zero

1 个答案:

答案 0 :(得分:3)

我们可以将其包装在{}中,以将其评估为代码块

{table - mean(table$blank[1:3]) }%>%
       add_column(n=1)

因为这些运算符(%>%的顺序或优先级低于+中的-?Syntax

#:: ::: access variables in a namespace
#$ @    component / slot extraction
#[ [[   indexing
#^  exponentiation (right to left)
#- +    unary minus and plus    ####
#:  sequence operator
#%any%  special operators (including %% and %/%) #####
#* /    multiply, divide

在tidyverse中,不要这样做

library(dplyr)
table %>%
     mutate_all(~ . - mean(head(blank, 3))) %>%
     add_column(n = 1)

这可以用

重现
data(mtcars)
head(mtcars) - mean(mtcars$mpg[1:3]) %>% 
  add_column(n = 1)

if(nrow(df)!= nrow(.data)){错误:参数长度为零

如果我们创建一个块,

{head(mtcars) - mean(mtcars$mpg[1:3])} %>% 
     add_column(n = 1)
#                   mpg   cyl  disp    hp   drat      wt  qsec    vs    am  gear  carb n
#Mazda RX4         -0.6 -15.6 138.4  88.4 -17.70 -18.980 -5.14 -21.6 -20.6 -17.6 -17.6 1
#Mazda RX4 Wag     -0.6 -15.6 138.4  88.4 -17.70 -18.725 -4.58 -21.6 -20.6 -17.6 -17.6 1
#Datsun 710         1.2 -17.6  86.4  71.4 -17.75 -19.280 -2.99 -20.6 -20.6 -17.6 -20.6 1
#Hornet 4 Drive    -0.2 -15.6 236.4  88.4 -18.52 -18.385 -2.16 -20.6 -21.6 -18.6 -20.6 1
#Hornet Sportabout -2.9 -13.6 338.4 153.4 -18.45 -18.160 -4.58 -21.6 -21.6 -18.6 -19.6 1
#Valiant           -3.5 -15.6 203.4  83.4 -18.84 -18.140 -1.38 -20.6 -21.6 -18.6 -20.6 1
相关问题