2 つの入力の行名と列名が一致しない場合、関数を停止してエラー メッセージを返すようにしたいと考えています。入力は、行列または data.frames のいずれかです。
私は成功せずに次のことを試しました:
abun <- matrix(c(0.4,0,0.6,0.1,0.4,0.5),
nrow = 2, ncol = 3, byrow = TRUE,
dimnames = list(c("x", "y"),
c("A","B","C")))
x<-data.frame("Trait1" =c(1,1,0),"Trait2"=c(1,1,1),
"Trait3" =c(1,1,0),"Trait4" =c(1,0,1))
rownames(x)<-c("A","B","D")
test<-function(abun,x){
if(colnames(abun) != rownames(x))stop("species names in abun and x do not match")
abun<-abun*2
abun
}
test(abun,x)
どんな洞察も大歓迎です!