データ フレームの列名 (種) が 2 番目の属性テーブルの 2 つの引数と一致する場合にのみ行合計を計算したいと考えています。これは、最初に属性テーブルの列の名前と一致し、属性テーブルの別の列に特定のエントリがあることを意味します。ただし、属性テーブルには、元のデータ フレームよりも多くの種が含まれています。
私は試した :
# Species data from vegan package:
data(varespec, package = "vegan")
# create attributes table
attributes <- matrix(NA, length(varespec), 2)
attributes[,1] <- colnames(varespec)
attributes[,2] <- c(rep("MI",14),rep("PI",30))
# add species to the attribute table
x <- c("spec1","MI")
y <- c("spec2","PI")
attributes <- rbind(attributes, x, y)
row.names(attributes) <- c(1:46)
# calculate rowsums only for species contained in the attributes table
# and having the entry "MI" in the attributes table
for (i in 1:44){
for (j in 1:46){
if ((colnames(varespec)[i] == attributes[j,1]) & (attributes[j,2] == "MI")) {
apply(varespec,1,sum)
}
}}
しかし、MI - 種だけでなく、常に行全体を合計していました。