如何使用向量中的每个值作为平均值在R中重复dnorm?
我有一个向量:如何使用向量中的每个值作为平均值在R中重复dnorm?,r,repeat,normal-distribution,R,Repeat,Normal Distribution,我有一个向量: chbin <- seq (from = 0, to = 10, by = 0.02) 我需要创建一个数据帧。 数据帧的每一行应该有45个值,其中第一个值是dnorm(chbin,mean=(chmean[1]),sd=(cherr[1],log=FALSE),第二个值是dnorm(chbin,mean=(chmin[2]),sd=(cherr[2],log=FALSE),依此类推到dnorm(chbin,mean=(chbin,mean[45]),sd=(cherr l
chbin <- seq (from = 0, to = 10, by = 0.02)
我需要创建一个数据帧。
数据帧的每一行应该有45个值,其中第一个值是dnorm(chbin,mean=(chmean[1]),sd=(cherr[1],log=FALSE)
,第二个值是dnorm(chbin,mean=(chmin[2]),sd=(cherr[2],log=FALSE)
,依此类推到dnorm(chbin,mean=(chbin,mean[45]),sd=(cherr log=FALSE)
。也就是说,对于chbin中的每个值,dnorm计算45次,对于chmean中的每个值和cherr中的相应值,计算一次。
结果数据框将有45列,行数与chbin中的值相同。您可以使用以下嵌套for循环:
chbin <- seq (from = 0, to = 10, by = 0.02)
chmean <- seq (from = 1, to = 2, by = 0.02)
cherr <- seq (from = 1, to = 2, by = 0.02)
foo <- data.frame(matrix(0, nrow=length(chbin), ncol=length(chmean)) )
for(i in 1:length(chbin) ){
for(j in 1:length(chmean) ){
foo[i,j] <- dnorm(chbin[i], mean = chmean[j], sd = cherr[j], log=FALSE)
}
}
chbin您可以使用以下嵌套for循环:
chbin <- seq (from = 0, to = 10, by = 0.02)
chmean <- seq (from = 1, to = 2, by = 0.02)
cherr <- seq (from = 1, to = 2, by = 0.02)
foo <- data.frame(matrix(0, nrow=length(chbin), ncol=length(chmean)) )
for(i in 1:length(chbin) ){
for(j in 1:length(chmean) ){
foo[i,j] <- dnorm(chbin[i], mean = chmean[j], sd = cherr[j], log=FALSE)
}
}
chbinmapply
可用于解决该问题:
chbin <- seq(from = 0, to = 10, by = 0.02)
chmean <- seq(from = 1, to = 2, by = 0.02)
cherr <- seq(from = 1, to = 2, by = 0.02)
foo <- mapply(function(mean,sd) dnorm(chbin,mean,sd), mean=chmean, sd=cherr)
chbinmapply
可用于解决该问题:
chbin <- seq(from = 0, to = 10, by = 0.02)
chmean <- seq(from = 1, to = 2, by = 0.02)
cherr <- seq(from = 1, to = 2, by = 0.02)
foo <- mapply(function(mean,sd) dnorm(chbin,mean,sd), mean=chmean, sd=cherr)
chbin