数值表达式有x个元素:只有第一个使用

时间:2017-08-30 02:12:42

标签: r dplyr

我正在尝试将for循环分解为tibble,然后使用summarize()函数来获取最终值。

这是循环

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个元素。我不知道如何解决问题。

1 个答案:

答案 0 :(得分: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)))