用函数的结果填充数据框
Fill data frame with result from function
我有以下代码用函数的结果逐行填充数据框。循环内函数的结果是随机的(模拟的一部分):
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 中以更少的行数和更有效的方式做到这一点。你知道如何做到这一点吗?
理想情况下,我想在创建输出数据帧的过程中传递所有参数。
像这样:
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)
我有以下代码用函数的结果逐行填充数据框。循环内函数的结果是随机的(模拟的一部分):
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 中以更少的行数和更有效的方式做到这一点。你知道如何做到这一点吗?
理想情况下,我想在创建输出数据帧的过程中传递所有参数。
像这样:
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)