доступ ко второму уровню списка - PullRequest
3 голосов
/ 02 марта 2012

У меня есть такой список

list <- structure(list(`1` = structure(c(274L, 173L), .Dim = 2L, .Dimnames = structure(list(
    c("2004", "2005")), .Names = ""), class = "table"), `2` = structure(73L, .Dim = 1L, .Dimnames = structure(list(
    "2005"), .Names = ""), class = "table"), `3` = structure(c(334L, 
365L, 366L, 365L, 365L, 365L, 366L, 365L, 287L), .Dim = 9L, .Dimnames = structure(list(
    c("1990", "1991", "1992", "1993", "1994", "1995", "1996", 
    "1997", "1998")), .Names = ""), class = "table"), `4` = structure(139L, .Dim = 1L, .Dimnames = structure(list(
    "2001"), .Names = ""), class = "table"), `5` = structure(71L, .Dim = 1L, .Dimnames = structure(list(
    "2009"), .Names = ""), class = "table"), `6` = structure(77L, .Dim = 1L, .Dimnames = structure(list(
    "1997"), .Names = ""), class = "table")), .Names = c("1", 
"2", "3", "4", "5", "6"))

Первый уровень этого списка - растущее число. На втором уровне у нас есть таблицы с именами столбцов в годах.

Я хочу построить сумму всех элементов второго уровня, где имя столбца - 2005. Как бы я это сделал?

Ответы [ 2 ]

3 голосов
/ 02 марта 2012

Вы можете использовать комбинацию sapply и [.

> sum(sapply(list, `[`, "2005"), na.rm=TRUE)
[1] 246
1 голос
/ 02 марта 2012

Это сделает трюк

get2005 <- function(x){
  x[names(x) %in% 2005]
}

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