2015-03-04 2 views
1

Это то, что я получил (список):Суммарный список целых чисел в двух столбцах в 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

'cbind (респ (сл (IDX), sapply (IDX, длина)), unlist (idx)) '(но не умно) – user20650

+0

@ user20650 Почему бы не умно?^^ –

ответ

0

Wops! Хорошо, прибил его:

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

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