2015-03-14 2 views
0

У меня есть набор данных, как это (это всего лишь краткий пример):Заказ списка на длину символа?

list1 <- c("FA") 
list2 <- c("FA", "EX", "FA") 
list3 <- c("FA", "FA") 
list <- list(list1, list2, list3) 

Мне нужно, чтобы изменить порядок list так, что на вершине появляется длинный вектор (т.е. list2) (т.е. как [[1]]) и появляются более короткие векторы в порядке убывания, например:

[[1]] 
[1] "FA" "EX" "FA" 

[[2]] 
[1] "FA" "FA" 

[[3]] 
[1] "FA" 

Как это сделать?

ответ

3

Вы можете перебирать элементы для получения длины, а затем использовать результирующий вектор для переупорядочения списка.

o <- vapply(list, length, 1L) 
list[order(o, decreasing = TRUE)] 
# [[1]] 
# [1] "FA" "EX" "FA" 
# 
# [[2]] 
# [1] "FA" "FA" 
# 
# [[3]] 
# [1] "FA" 
Смежные вопросы