如何循环执行函数并将多份输出存储至DataFrame中?
循环执行R函数并将结果存入DataFrame
你已经定义了返回采样均值和标准差的函数:
sample_vec <- function(v,n){ currentsample <- sample(v,n) m <- mean(currentsample) s <- sd(currentsample) return(c(m,s)) }
也创建了用于存储结果的空DataFrame:
sdf <- data.frame(matrix(NA, nrow = 10000, ncol = 2)) colnames(sdf)[1] = "m" colnames(sdf)[2] = "s"
以下两种方法可以帮你循环执行函数10000次,并把结果存入对应列:
方法1:for循环(直观易读)
直接遍历索引,每次执行函数后将结果赋值给DataFrame的对应位置:
for (i in 1:nrow(sdf)) { res <- sample_vec(gene_df$gene_length_bp, 3) sdf$m[i] <- res[1] sdf$s[i] <- res[2] }
方法2:lapply + do.call(高效简洁)
利用R的向量化操作批量生成结果,比for循环效率更高,适合大次数循环场景:
# 生成包含10000次结果的列表 res_list <- lapply(1:10000, function(x) sample_vec(gene_df$gene_length_bp, 3)) # 将列表转换为数据框并设置列名 sdf <- as.data.frame(do.call(rbind, res_list)) colnames(sdf) <- c("m", "s")
内容的提问来源于stack exchange,提问作者NSA
相关产品推荐
相关产品推荐

