【发布时间】:2020-05-19 16:35:38
【问题描述】:
我正在尝试创建一个复制其他两个函数 100 次的函数,然后计算这些值的平均值。
我有一个这样的矩阵:
str(pref)
#num [1:9, 1:158] 4 9 15 6 7 8 6 11 11 4 ...
#- attr(*, "dimnames")=List of 2
# ..$ : NULL
# ..$ : chr [1:158] "V1" "V2" "V3" "V4" ...
我试图用这段代码重现它(也许不是最好的):
pref <- cbind(v = c(6,4,3,5,2,6),
c = c(5,6,7,4,2,5),
d= c(0,2,4,5,12,4))
它是包vegan和SpadeR的组合,输出o chao
library(vegan)
library("SpadeR")
library(tidyverse)
library(data.table)
pref[is.na(pref)] <- 0
chaox100 <- function(x, y){
replicate(100, {
subsample <- rarefy(x, y)
chao <- ChaoSpecies(subsample)
df <- chao$Species_table
})
}
如果有帮助,chao$Species_table 是一个矩阵,因此该函数应复制 100 次,但输出数据是一团糟。看看怎么样:
我想拥有所有数据的所有平均值。我试过cbind、rbind、group_by(row.names)、summarize_all。
str(test)
# num [1:9, 1:4, 1:100] 262 221 779 530 829 ...
# - attr(*, "dimnames")=List of 3
# ..$ : chr [1:9] " Homogeneous Model" " Homogeneous (MLE)" " Chao1 (Chao, 1984)" " Chao1-bc" ...
# ..$ : chr [1:4] "Estimate" "s.e." "95%Lower" "95%Upper"
# ..$ : NULL
【问题讨论】:
-
如何调用函数
chaox100?参数x是矩阵pref,但是y呢? -
apply(test, MARGIN = 1:2, mean)是你想要的吗? -
糟糕,抱歉。正如您所说,X 是首选,而 Y 是单个值(在这种情况下为 70)。所以
chaox100(pref,70). -
我可以在函数中添加
apply吗?我在chaox100(pref,70)的输出上使用了apply,效果很好!!十分感谢!我只是在想是否可以将其添加到函数中。 -
是的,您可以将
replicate和apply的输出分配给那个意思。
标签: r function vegan replicate