对于R来说,我是一个完整的新手,并在此发帖,所以请提前道歉。我想要做的是组合2个数据帧
data <- seq(0,1000)
info <- data.frame(x,a,b)
其中信息最多可达到约。 50,000行。我需要做的是将数据中的每个条目除以信息中的每个x,然后使用pbeta和答案。例如
data[1,1] = 1
和
info$x = seq(1:10)
然后我需要
sum(pbeta(1/1,a,b), pbeta(1/2,a,b), pbeta(1/3,a,b) ... pbeta(1/10,a,b))
目前我正在使用循环来遍历每个数据元素并执行计算。有没有办法避免使用循环。如下所示
while (value <= max)
{x<-(value/info$x);
alp<-(info$Alpha);
bet <-(info$beta);
rat<-(info$rate);
ans <-(1/(1-exp(-1*(sum((1-pbeta(x,alp,bet))*r)))));
data <- rbind(data,data.frame(ans, value));
value <- (value + ((max-1)/1000));
}
对于我对此缺乏了解以及如何发布而道歉。任何帮助将不胜感激。
答案 0 :(得分:1)
你的while
循环令我困惑,因为它似乎没有你之前描述的那样。但是,这可能有用:
data <- (1:5)/10
info <- data.frame(x = 1:3, a = 1 + (1:3)/10, b = 1 - (1:3)/10)
vapply(data, function(x, info) sum(pbeta(x/info$x, info$a, info$b)),
info = info,
FUN.VALUE = 0.1)
#[1] 0.1009253 0.2234949 0.3571645 0.4994744 0.6493979