r - 创建一个复制其他函数 100 次的函数
问题描述
我正在尝试创建一个复制其他两个函数 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
解决方案
为了运行问题中的函数并让它返回平均值,apply
函数mean
到replicate
.
chaox100 <- function(x, y){
test <- replicate(100, {
subsample <- rarefy(x, y)
chao <- ChaoSpecies(subsample)
chao$Species_table
})
apply(test, MARGIN = 1:2, mean)
}
chaox100(pref, 70)
# Estimate s.e. 95%Lower 95%Upper
# Homogeneous Model 6.000 0.541 6.000 7.543
# Homogeneous (MLE) 6.467 0.795 6.047 10.595
# Chao1 (Chao, 1984) 6.000 0.541 6.000 7.543
# Chao1-bc 6.000 0.541 6.000 7.543
# iChao1 (Chiu et al. 2014) 6.000 0.541 6.000 7.543
# ACE (Chao & Lee, 1992) 6.000 0.541 6.000 7.543
# ACE-1 (Chao & Lee, 1992) 6.000 0.541 6.000 7.543
# 1st order jackknife 6.000 0.541 6.000 7.543
# 2nd order jackknife 6.000 0.541 6.000 7.543
#There were 50 or more warnings (use warnings() to see the first 50)
推荐阅读
- sql-server - 如何将多个日期值传递给sql中的单个变量
- html - 如何删除R Markdown中图形之间的空白
- azure - 无法在 Azure 应用服务上启动 Kestrel 引发无法配置 HTTPS 端点异常
- c - 子进程在第一次迭代后不执行函数
- sql-server - T-SQL DATEDIFF 返回年份和月份
- php - 在最近的分隔符后格式化字符串
- powershell - OpenVPN命令行安装
- javascript - Firebase nodemailer - 快照数据问题
- php - 应该忽略少数数字的差异
- android - 从结果 google.com 打开应用程序,始终指向 WebView Android 的主页