2016-12-29 63 views
-1

想要在R索引中對索引進行排序任何不使用反向序列的方法?按R索引對索引進行排序

library(tibble) 
library(dplyr) 

    options(tibble.width = Inf) 
    options(dplyr.print_max = Inf) 

返回比較尾巴......

iris %>% tail 
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
# 145   6.7   3.3   5.7   2.5 virginica 
# 146   6.7   3.0   5.2   2.3 virginica 
# 147   6.3   2.5   5.0   1.9 virginica 
# 148   6.5   3.0   5.2   2.0 virginica 
# 149   6.2   3.4   5.4   2.3 virginica 
# 150   5.9   3.0   5.1   1.8 virginica 

(tibbleIris <- as_tibble(iris)) 

可以通過相反的順序排序,但它的指數是不是......

tibbleIris[nrow(tibbleIris):1,] # Sorts in reverse order 
# # A tibble: 150 × 5 
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
# <dbl>  <dbl>  <dbl>  <dbl>  <fctr> 
# 1   5.9   3.0   5.1   1.8 virginica 
# 2   6.2   3.4   5.4   2.3 virginica 
# 3   6.5   3.0   5.2   2.0 virginica 
# 4   6.3   2.5   5.0   1.9 virginica 
# 5   6.7   3.0   5.2   2.3 virginica 
# 6   6.7   3.3   5.7   2.5 virginica 


tibbleIris %>% arrange(-index) 
# Error: object 'index' not found 
+0

你是什麼意思'索引'? – bouncyball

+0

'rownames(tibbleIris)'返回索引字符串。例如,想知道是否有一種按rowname整數排序的方法。 – eyeOfTheStorm

+0

由於'index'沒有在R中定義,但是您將其定義爲'rownames(tibbleIris)',您可以嘗試告訴R您的定義...類似於'tibbleIris [order(rownames(tibbleIris))]' – Gregor

回答

2

還沒明白你的意思:這似乎工作:

iris %>% as_tibble %>% arrange(desc(as.numeric(rownames(iris)))) 

(我離開ou爲簡單起見,中間分配爲tibbleIris)。使用rownames是相當un-tidyverse-ish,所以我可能會建議設置一個明確的索引變量,而不是...

iris %>% as_tibble %>% mutate(index=seq(n())) %>% 
     arrange(desc(index)) 
+2

好問題[現在刪除:「是否有一個參考文件定義了非反向 - ishness?」]大概是韋翰的書。我從骰子不允許設置rownames的事實中收集了這個特定的想法,例如, https://github.com/tidyverse/tibble/issues/114 –

+1

謝謝......我向谷歌(我應該問之前)提出了全面的反應,並將R提升爲數據科學。這似乎是一個安全的賭注。附: 「un-tidyverse-ishness」當然是不整潔的 – bouncyball