微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

管道中的 R 打印强制错误类型

如何解决管道中的 R 打印强制错误类型

在管道中使用 print() 时,它似乎将 x 强制为 .

seq(1,10,1) %T>% print(x=summary(.)) %>% summary()

给予

Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1       3       6       6       8      10 
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
1.00    3.25    5.50    5.50    7.75   10.00 

我最初想要的是在 summary() 之外得到 sd() 并尝试过:

seq(1,1) %T>% print(x=sd(.)) %>% summary()

但得到:

[1] 3
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1.00    3.25    5.50    5.50    7.75   10.00 
> 

我尝试了 cat() 和 c() 的变体,但数字 1:10 进入了这些函数的第一个点。

一般的问题是有没有一种方法可以使用管道运算符来显示通过管道移动的内容的多个摘要函数。我知道我可以使用一个以 sd() 结尾的管道和一个以 summary() 结尾的第二个管道 - 但我的管道的开头比 seq(1,1) 复杂得多,我想避免重复或保存变成一个对象。

解决方法

用括号括起来

library(magrittr)
seq(1,10,1) %T>% 
        {print(x=summary(.))} %>%
         summary
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1.00    3.25    5.50    5.50    7.75   10.00 
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1.00    3.25    5.50    5.50    7.75   10.00 

或者第二种情况

seq(1,1) %T>% {print(x=sd(.))} %>% summary()
[1] 3.02765
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1.00    3.25    5.50    5.50    7.75   10.00 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。