Можно ли напрямую выбрать столбец всех вложенных списков в списке?
Мой список создается с помощью aggregate() с таблицей():
AgN=aggregate(data,by=list(d$date),FUN=table,useNA="no")
AgN$x
выглядит следующим образом:
$`0`
1 2 3 9 11
0.447204969 0.438509317 0.096894410 0.009937888 0.007453416
$`1`
1 2 4 8 11
0.489974937 0.389724311 0.102756892 0.006265664 0.011278195
…
$n
Я хочу получить вектор определенного столбца для каждой таблицы, например. вектор, содержащий значения всех столбцов с именем "1".
Я все еще новичок R, но даже после долгого поиска и поиска не нашел ничего хорошего. Если я хочу получить поле списка, я могу просто индексировать его с помощью скобок, например. [I, J].
В Интернете я нашел несколько примеров для матриц, поэтому я попытался сделать то же самое, сначала выбирая только один столбец с вложенными списками с AgN$x[1][1]
, но все же выбираем полный список:
$
0
1 2 3 8 11
0,447204969 0,438509317 0,096894410 0,009937888 0,007453416
Моя следующая попытка была AgN$x[[1]][1]
, и она работала:
1
0.447205
Итак, я попытался сделать то же самое, чтобы выбрать значение каждого первого столбца всех вложенных списков:
AgN$x[[1:length(AgN$x]][1]
Recursive indexing failed at level 2
По-видимому, проблема заключается в том, что запрещено выбирать диапазон, если вы используете двойные скобки.
Моя последняя попытка заключалась в использовании цикла for:
cduR=NULL
for (i in 1:length(AgN$x)){
t=AgN$x[[i]]
cduR=c(cduR,as.vector(t["1"]))
}
Наконец, пока это работает. Но таким образом мне приходилось создавать цикл каждый раз, когда я хочу выбирать столбцы. Нет прямого пути?
Спасибо за вашу помощь.