Сводка списка целых чисел в два столбца в R

Вот что у меня есть (список):

>head(indexes)
[[1]]
numeric(0)

[[2]]
[1] 12

[[3]]
[1] 13

[[4]]
[1] 2 3

[[5]]
[1] 25

[[6]]
[1] 26

> all(vapply(indexes, is.numeric, TRUE)) # (note that..)
[1] TRUE

.. и это то, что я хочу (та же информация для меня):

>head(res,6)
     [,1] [,2]
[1,]    2   12
[2,]    3   13
[3,]    4    2
[4,]    4    3
[5,]    5   25
[6,]    6   36

Есть ли умный способ сделать это?

Я попробовал трюк с именованием списка:

names(indexes) <- 1:lenght(indexes)
res <- c(indexes, recursive=TRUE)
res <- cbind(as.integer(names(res)), res)

Но R (такой чертов ребенок!) Ломает все, переименовывая одинаковые строки неоднозначным образом:

>head(res)
      res
2   2   2
3   3   3
41 41   2
42 42   3
5   5   5
6   6   6

# ... (think about what happens around lines 3675.. 41158..)

.. если это был умный способ, как я могу предотвратить переименование?

1 ответ

Решение

П! Хорошо, прибил это:

res <- cbind(
  rep(1:length(indexes), vapply(indexes,length,1)),
   c(indexes,recursive=TRUE)
)

.. просто скажи мне, если кто-нибудь нашел лучший способ, то:)

Другие вопросы по тегам