我有一个像这样的数据框:
df<- data.frame(plot=c(rep(133, 3), rep(134,4)), plant= c(1,1,2,3,3,4,4),
morpho= c("A", "B", "C", "D","E","B","C"), freq=c(2,1,2,1,3,1,3))
然后我使用以下内容以cast()
可用的格式获取数据框:
library("reshape")
cast<- cast(df, plot+plant ~ morpho,
value ='freq',fun.aggregate=sum)
这使它成为7个元素的列表。
我现在想要在每个图中应用函数来计算每个图中植物之间的β多样性。我会使用这个函数:
library("vegetarian")
d(cast, lev="beta", q=1, boot=TRUE)
我尝试了以下但没有成功:
lapply(cast, function(x){d(x,lev= "beta", q=1, boot=TRUE)})
此示例的输出为:
output<- data.frame( plot=c(133, 134), D.Value= c(2,2 ), StdErr=c(0, 1.734224e-16) )
答案 0 :(得分:1)
我们可以通过
来做到这一点library(dplyr)
library(purrr)
split(cast[-(1:2)], cast$plot) %>%
map(d, lev = "beta", q = 1, boot = TRUE) %>%
map(as_tibble) %>%
bind_rows(., .id = 'plot')
如果我们查看OP的代码,它会循环遍历每一列,其中d
需要丰富的&#39; as(基于?d
)
社区数据作为矩阵,其中列是单独的物种和 行是站点。矩阵元素是丰富的数据
因此,我们通过“情节”split
对数据集进行list
。在数据子集上,即只有计数列的数据,应用&#39; d&#39;使用map
在每个bind_rows
元素上,然后使用while(true)
for (uint g = 0; g < pictures.size(); g++){
glUseProgram(pictures[g]->ProgramId);
pictures[g]->render();
}