Распечатать список списков без номеров строк в R - PullRequest
0 голосов
/ 29 сентября 2018

Я хотел бы удалить номера строк в списке списков в R. Я проверил это решение , но использование row.names = FALSE не работает для списка списков.Например:

C= list(listA = list(1:3, structure(1:9, .Dim = c(3L, 3L)), 4:9), 
    listB = list(c("t1", "t2", "t3"), structure(c("p1", "p2"), .Dim = 2:1)))

результат для print(C) и print(C, row.names = FALSE) одинаков:

$`listA`
$`listA`[[1]]
[1] 1 2 3

$`listA`[[2]]
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

$`listA`[[3]]
[1] 4 5 6 7 8 9


$listB
$listB[[1]]
[1] "t1" "t2" "t3"

$listB[[2]]
     [,1]
[1,] "p1"
[2,] "p2"

Мой ожидаемый результат:

$listA
$listA[[1]]
1 2 3

$listA[[2]]

1    4    7
2    5    8
3    6    9

$listA[[3]]
4 5 6 7 8 9


$listB
$listB[[1]]
"t1" "t2" "t3"

$listB[[2]]

"p1"
"p2"

И это еще один пример очень длинного списка списков, который я не мог удалить номера строк:

C1 = list(sector6_T06 = structure(list(I_1 = c(0.138020551652649, 
0.144926670928027, 0.149053631932294, 0.141536613829619, 0.141702678898179, 
0.137570073218103, 0.137138016297551, 0.1353084643726, 0.122970865726172, 
0.113268846326401, 0.0963028537881388, 0.0903790807114376, 0.0874631650322059, 
0.085312817477299, 0.0824981588006636, 0.0813193127885678, 0.0802771152566699, 
0.0793845870225118, 0.0790157481266558, 0.0786926819627487, 0.0781238524715645, 
0.0777219122602425, 0.0775867136030337, 0.0774915610454734), 
    I_2 = c(0.219262966881223, 0.229247895586232, 0.237229575776489, 
    0.220354084548452, 0.208789770302538, 0.202169506828404, 
    0.200538005582317, 0.198253713943851, 0.176174353994156, 
    0.16630312132205, 0.139566647564992, 0.132004716651325, 0.130368509974452, 
    0.123749451268899, 0.120567292287923, 0.119242120883444, 
    0.118075055976716, 0.117079181022326, 0.116668142679692, 
    0.116308335194556, 0.115677490002872, 0.115233134393343, 
    0.115083945213702, 0.114979230544904), I_3 = c(0.304931072097664, 
    0.317975507940971, 0.330725110764882, 0.301488240135078, 
    0.269040556975353, 0.259788621772735, 0.255920833087015, 
    0.252950729743552, 0.219115116915787, 0.210619055246998, 
    0.17355685687669, 0.16425036406777, 0.164199571882626, 0.152387183269087, 
    0.148995928793151, 0.147587257891481, 0.146348586161128, 
    0.145293132510833, 0.144857783790805, 0.144476795276745, 
    0.143809772751329, 0.143340496213876, 0.143183050013913, 
    0.143072663566612)), row.names = c(NA, -24L), class = "data.frame"))

1 Ответ

0 голосов
/ 29 сентября 2018

Вот очень грязное решение:

format.list <- function (l) {
    s <- capture.output(print(l))
    writeLines(
        sub("^ *(\\[,\\d+\\] *)+$", "",        # Remove indices from second dimension.
            sub("^ *\\[\\d+,?\\] *", "", s)))  # Remove indices from first dimension.
}
>> format.list(C)
$listA
$listA[[1]]
1 2 3

$listA[[2]]

1    4    7
2    5    8
3    6    9

$listA[[3]]
4 5 6 7 8 9


$listB
$listB[[1]]
"t1" "t2" "t3"

$listB[[2]]

"p1"
"p2"

Если вам нужна поддержка 3-х и более размерных массивов, ну, это тоже можно добавить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...