作者swedrf0112 (M)
看板R_Language
标题[问题] Magrittr 小问题
时间Tue Jun 28 15:00:13 2016
[问题类型]:程式谘询
[软体熟悉度]: 入门
[问题叙述]: magrittr 的 pipe 可以抓到最一开始的物件吗?
[程式范例]:
> x=runif(5,0,1)
>
> ## 将向量内的值排序
> x[order(x)]
[1] 0.1710200 0.2608820 0.2966179 0.5351188 0.9172524
>
> ## 想请问除了下面的方法外,最後一个 pipe 该怎麽下?
> x %>% order %>% x[.]
[1] 0.1710200 0.2608820 0.2966179 0.5351188 0.9172524
先谢谢各位!!
######
不好意思,我重新说明一次我的问题,
其实原本的问题是,在问题中的 x ,有些时候是一些经过处理的物件,
给我现在遇到的例子 :
# > head(season,20)
# [1] "2000-01" "2001-02" "2002-03" "2003-04" "2004-05" "2005-06" "2006-07"
"2007-08" "2008-09" "2009-10"
# [11] "2010-11" "2011-12" "2012-13" "2013-14" "2014-15" "2015-16" "1996-97"
"1997-98" "1998-99" "1999-00"
我想要针对 season 向量的 unique 进行排序,以一般的写法,我写成 :
# > unique(season)
# [1] "2000-01" "2001-02" "2002-03" "2003-04" "2004-05" "2005-06"
# [7] "2006-07" "2007-08" "2008-09" "2009-10" "2010-11" "2011-12"
# [13] "2012-13" "2013-14" "2014-15" "2015-16" "1996-97" "1997-98"
# [19] "1998-99" "1999-00"
unique(season)[order(as.numeric(substr(unique(season),1,4)))]
但是因为我觉得在里面 season 必须被 unique 两次,很浪费计算资源,
也可以先令一个 y=unique(season),把原本的式子 unique(season) 改成 y , 但这样
会浪费记忆体记这一个暂时的向量
所以我想用 magrittr 写,所以我才以刚刚这个简单的例子,想问是否可以呼叫 pipe 最
一开始的物件,因为我在 magrittr 的 help 里没找到这件事XD
season %>% unique %>% substr(.,1,4) %>% as.numeric %>% order %>% "这边应该要呼
叫最一开始的 season"
针对一开始没把问题说清楚,跟 C 大与各位致歉,谢谢!
也请各位指正里面的想法是否有错误,或许根本就不会发生我想的事XDD
[环境叙述]:
[关键字]: Magrittr
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.136.128.96
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1467097215.A.D67.html
※ 编辑: swedrf0112 (223.136.128.96), 06/28/2016 15:03:36
1F:→ celestialgod: x %>% order %>% {x[.]} 06/28 15:12
2F:→ swedrf0112: 谢谢c大, 我想问的是,可以不在最後ㄧ个pipe再呼叫ㄧ 06/28 15:27
3F:→ swedrf0112: 次 x 吗? 不好意思没表达清楚! 06/28 15:27
4F:→ celestialgod: x %>% {.[order(.)]}这样吗 06/28 15:27
5F:→ celestialgod: 只要隔了一个pipe就不能往回找前一个 06/28 15:28
6F:→ celestialgod: pipeR写法: x %>>% (~ order_x <-order(x)) %>>% 06/28 15:29
7F:→ celestialgod: '['(order_x) 06/28 15:29
9F:→ celestialgod: 只是排序,为什麽不用x %>% sort? 06/28 15:30
※ 编辑: swedrf0112 (223.136.128.96), 06/28/2016 15:53:21
10F:→ swedrf0112: ok 谢谢c 大! 我会仔细看ㄧ下pipeR 感谢!! 06/28 15:58
11F:→ celestialgod: 储存暂存变数跟计算应该是一个trade-off 06/28 16:01
12F:→ celestialgod: 我觉得应该很难避免QQ 06/28 16:01
13F:→ swedrf0112: 没错 资料量ㄧ大又是另ㄧ个问题... 囧 06/28 16:47