【发布时间】:2015-07-14 23:31:02
【问题描述】:
我有一个物种特征表(>400 个物种,50 个特征中的每一个都有分数)。我希望通过在多个站点 (150 个站点) 记录的物种丰度来衡量这一点,最终创建一个每个站点中每个单独性状的总得分表。我可以手动执行此操作(见下文),但不确定如何更有效地编写代码。
T1 <- c(0,1,0); T2 <- c(0,0,0.5); T3 <- c(1,0,0.5);
T4 <- c(1,0,0.5); T5 <- c(0,1,0.5);
df.trt <- data.frame(T1,T2,T3,T4,T5)
rownames(df.trt) <- c("Species.A", "Species.B", "Species.C")
rm(T1,T2,T3,T4,T5)
Site.1 <- c(10,0,1); Site.2 <- c(0,3,7); Site.3 <- c(2,4,100)
df.abund <- data.frame(Site.1,Site.2,Site.3)
rownames(df.abund) <- c("Species.A", "Species.B", "Species.C")
rm(Site.1,Site.2,Site.3)
### Table of Species Traits
df.trt
### Table of Species Abundance
df.abund
###Generating the weighted table manually
Site.1 <- c(sum(df.trt[,1]*df.abund[,1]),
sum(df.trt[,2]*df.abund[,1]), sum(df.trt[,3]*df.abund[,1]),
sum(df.trt[,4]*df.abund[,1]), sum(df.trt[,5]*df.abund[,1]))
Site.2 <- c(sum(df.trt[,1]*df.abund[,2]),
sum(df.trt[,2]*df.abund[,2]), sum(df.trt[,3]*df.abund[,2]),
sum(df.trt[,4]*df.abund[,2]), sum(df.trt[,5]*df.abund[,2]))
Site.3 <- c(sum(df.trt[,1]*df.abund[,3]),
sum(df.trt[,2]*df.abund[,3]), sum(df.trt[,3]*df.abund[,3]),
sum(df.trt[,4]*df.abund[,3]), sum(df.trt[,5]*df.abund[,3]))
wt.trt <- data.frame(Site.1, Site.2, Site.3)
rm(Site.1,Site.2,Site.3)
rownames(wt.trt) <- c("T1","T2","T3","T4","T5")
wt.trt <- t(wt.trt); wt.trt <- data.frame(wt.trt)
###To generate the following table
wt.trt
我知道这不应该是一项过于繁重的任务,但我不知道如何去做。感谢您提供的任何建议。
PS:我对 R 还很陌生,这是我在 Stack Overflow 上的第一篇文章,如果我不小心不遵守网站规则/礼仪,我深表歉意。我不认为这是一个重复的查询(或者至少,我找不到任何有帮助的东西)
【问题讨论】:
标签: r