如何使用向量中的每个值作为平均值在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) 
 }
}

chbin
mapply
可用于解决该问题:

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
mapply
可用于解决该问题:

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