2017-08-30 51 views
0

我試圖將一個for-loop分解成一個tibble,然後使用summarize()函數來獲得最終值。數值表達式有x個元素:只有第一個使用

這是循環

prob <- NULL 
for(i in(4:16)){ 
    p1 = dbinom(i,16,0.2) 
    k=13-i 
    p2=sum(dbinom(k:30,30,0.2)) 
    prob = c(prob,p1*p2) 
    print(i) 
} 

我能走到今天

df <- tibble(i=4:16) %>% 
    mutate(p1=dbinom(i,16,0.2),k=as.integer(13-i)) %>% 
    mutate(p2=sum(dbinom(k:30,30,0.2))) 
df 

這將產生以下錯誤

Warning message: 
In k:30 : numerical expression has 13 elements: only the first used 

警告說,第k只有13元,但這不應該是一個問題,因爲我的其餘數據有13個元素。我不知道如何解決這個問題。

+0

根本的問題是,因爲你不能從多個值的序列 - 例如:'C(1,2,3):3'給相同的*警告*。 – thelatemail

回答

2

你應該行操縱數據:試試這個

tibble(i=4:16) %>% 
    mutate(p1=dbinom(i,16,0.2),k=as.integer(13-i)) %>% 
    rowwise() %>% 
    mutate(p2=sum(dbinom(k:30,30,0.2))) 
+0

我不知道'rowwise()'謝謝 – Alex

+0

好嗎,謝謝你的建議 – myincas

相關問題