我知道本網站提出了類似的問題here,here和here,但它們都沒有解決我的問題。如何在數據框中爲每一行應用分佈函數
我有一個數據框,我想將rdirichlet
函數(從gtools
)應用到每一行。所以,每一行都應該被認爲是aplha。
data = NULL
data <- data.frame(rbind(
oct = c(60, 32, 8),
sep = c(53, 35, 12),
ago = c(54, 40, 6)
))
data <- data/100*1000
library(gtools) # contains the function
sim <- 10000 # simulation
我的第一個attenpt是使用apply
,它的工作,但輸出不適合進行進一步分析說清楚;每一行計算成爲一個載體:
p = apply(data, 1, function(x) rdirichlet(sim, alpha = x + 1))
我也嘗試沒有成功一個循環:
p = NULL
for(i in 1:length(data)) {
p[i] <- rdirichlet(sim, alpha = data[i] + 1)
}
任何提示我怎麼能解決這個問題?
也許'lapply(數據,rdirichlet,N = SIM)' – jbaums 2014-10-29 13:54:04
@jbaums,我猜你的意思是像'sapply(T(數據) ,rdirichlet,n = sim)'雖然它缺少'x + 1'部分 – 2014-10-29 13:57:28
@David - 這取決於「行」是什麼。 (我不知道'x + 1'的相關性是什麼......它在Q中沒有描述) – jbaums 2014-10-29 13:59:52