【发布时间】:2014-04-21 01:57:02
【问题描述】:
我有一个矩阵
A <- matrix(c(1,2,1,2,4,4,6,7,6),nrow=3,ncol=3)
所以基本上我将每个元素替换为它在相应列中出现的频率,并取行中所有元素的乘积。
我的方法
fr <- c(paste("fr", 1:97, sep = ""))
for(i in 1:3){assign(fr[i],table(A[,i]))}
prob=matrix(c(rep(1,3)),3, byrow = T)
for (i in 1:3)
{
for (j in 1:3)
{
prob[i]<-prob[i]*get(fr[j])[as.character(A[i,j])]
}
}
有没有什么办法不用写循环,用矩阵结构来解决这个问题?
我想我们可以使用apply
我正在使用 R 语言
【问题讨论】:
-
既然您使用的是 R,为什么不以其他 R 用户可以轻松使用的方式共享您的数据?
-
看来
apply(ifelse(A == 1 | A == 6, 2/3, 1/3), 2, prod)可能是你想要的,或者接近它。但是,是的,请让这个 R-reproducible。 -
@AnandaMahto 我已经编辑了问题并提供了我正在使用的代码