2017-05-29 22 views
0

我有一個矢量:如何使用向量中的每個值作爲平均值來重複R中的dnorm?

chbin <- seq (from = 0, to = 10, by = 0.02) 

我有各45個值的兩個其它矢量。

chmean 
cherr 

我需要創建一個數據幀。 數據幀的每一行應具有45個值,其中第一個值爲dnorm(chbin, mean = (chmean[1]), sd = (cherr[1], log=FALSE),第二個值爲dnorm(chbin, mean = (chmean[2]), sd = (cherr[2], log=FALSE)等等,直到dnorm(chbin, mean = (chmean[45]), sd = (cherr[45], log=FALSE)。即對於每個值,在chmean中計算dnorm 45次,爲chmean中的每個值計算一次,在cherr中計算相應的值。 生成的數據幀將具有45列,並且與chbin中的值具有相同的行數。

回答

1

您可以按照嵌套的循環使用:

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) 
} 
} 
1

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) 
相關問題