使用函数结果填充数据框

时间:2015-02-18 09:49:11

标签: r function for-loop dataframe rbind

我有以下代码用行按行填充数据框的结果。循环内部函数的结果是基于随机的(模拟的一部分):

input <- as.data.frame(matrix(seq(1:20),4,5), row.names = c("A", "B", "C", "D"))
output <- data.frame()

j = 1
for (rowname in rownames(input)) {
   output <- rbind(output,ifelse(runif(5)+2>=rep(1/input[j,1],5),round(rgamma(5,shape=0.8, rate=2),0),rep(0,5)))
   j = j+1
}
rownames(output) <- rownames(input)

我想避免for循环,我想应该有一种方法可以用更少的行和R中更有效的方式来做这个。你知道怎么做吗?

理想情况下,我想在创建输出数据框期间传递所有参数。

1 个答案:

答案 0 :(得分:1)

这样的事情:

ifelse(
  matrix(runif(prod(dim(input)))+2,nrow=nrow(input)) >= 1/input,
  matrix(round(rgamma(prod(dim(input)),shape=0.8, rate=2),0),nrow=nrow(input)),
  0)