R работает со списками в списках - PullRequest
1 голос
/ 04 октября 2011

В R я могу добавить 1 к каждому элементу списка, выполнив alist<-alist +1.Но что, если у меня есть что-то вроде alist<-list(list(1,2,3),list(2,3,4)).Есть ли способ добавить 1 к каждому элементу подсписка без использования цикла?

Ответы [ 2 ]

7 голосов
/ 04 октября 2011

В списке вопросов было написано, но в примере показан вектор. Я думаю, что ОП означало это:

alist <- list(list(1, 2, 3), list(2, 3, 4))

Вместо цикла вы можете использовать рекурсивную версию lapply, см .: ?rapply.

> rapply(alist, function(x) x+1, how = "list" )
[[1]]
[[1]][[1]]
[1] 2

[[1]][[2]]
[1] 3

[[1]][[3]]
[1] 4


[[2]]
[[2]][[1]]
[1] 3

[[2]][[2]]
[1] 4

[[2]][[3]]
[1] 5
4 голосов
/ 05 октября 2011

Я только что узнал об этом вчера;это может быть полезно для других в подобных ситуациях;[[ позволяет выполнять рекурсивную индексацию в списках, например так.

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