[问题类型]:程式咨询
[软件熟悉度]: 入门
[问题叙述]: 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