У меня есть некоторый вывод из функции vegan
specaccum
. Это список из 8 объектов различной длины;Извлечь несколько объектов из списка в R
> str(SPECIES)
List of 8
$ call : language specaccum(comm = PRETEND.DATA, method = "rarefaction")
$ method : chr "rarefaction"
$ sites : num [1:5] 1 2 3 4 5
$ richness : num [1:5] 20.9 34.5 42.8 47.4 50
$ sd : num [1:5] 1.51 2.02 1.87 1.35 0
$ perm : NULL
$ individuals: num [1:5] 25 50 75 100 125
$ freq : num [1:50] 1 2 3 2 4 3 3 3 4 2 ...
- attr(*, "class")= chr "specaccum"
Я хочу, чтобы извлечь три из списков («богатство», «Sd» и «физических лиц») и преобразовать их в столбцы в кадре данных. Я разработал обходное решение;
SPECIES.rich <- data.frame(SPECIES[["richness"]])
SPECIES.sd <- data.frame(SPECIES[["sd"]])
SPECIES.individuals <- data.frame(SPECIES[["individuals"]])
SPECIES.df <- cbind(SPECIES.rich, SPECIES.sd, SPECIES.individuals)
Но это кажется неуклюжим и затяжным. Интересно, может ли кто-нибудь предложить новое решение? (Должен ли я смотреть на что-то с лапкой?) Спасибо!
Примеры данных для генерации вывода specaccum
;
Set.Seed(100)
PRETEND.DATA <- matrix(sample(0:1, 250, replace = TRUE), 5, 50)
library(vegan)
SPECIES <- specaccum(PRETEND.DATA, method = "rarefaction")
Спасибо @akrun! Это выглядит намного лучше. Я экспериментировал с подобными вещами, но испортил '(' и '[' – EcologyTom