You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言replicate模拟中保留每次结果前15个片段的问题

解决R语言replicate模拟保留前15个片段的问题

问题出在你的replicate匿名函数中,当前返回的是完整的lst而非你想要的前15个元素。你在代码里先写了lst(这会成为代码块的返回值),之后定义的frag并没有被作为最终返回值输出。

修改后的代码如下:

nsim <- 1000 ## numero de simulaciones
ll2 <- replicate(nsim, {
  ## Generate the sequence
  alph <- c("a", "c", "g", "t")
  seq <- sample(alph, size = lseq, prob = prop, replace = TRUE)
  Nsitrest <- strsplit(c2s(seq), split = sitrest)[[1]]
  lst <- nchar(Nsitrest)
  nl <- length(lst)
  if (nl > 1) {
    lst[1] <- lst[1] + 0.5 * nchar(sitrest)
    lst[nl] <- lst[nl] + 0.5 * nchar(sitrest)
  }
  if (nl > 2)
    lst[2:(nl - 1)] <- lst[2:(nl - 1)] + nchar(sitrest)
  # 直接处理并返回前15个元素,替换原来单独的lst行
  frag <- lst[1:15]
  frag
})

关键说明:

  • 在R的代码块中,最后一个表达式的结果会被作为返回值。你之前的代码先执行了lst,这会让完整的lst成为replicate的返回内容,后面的frag定义和调用不会覆盖这个返回值。
  • 如果某次模拟生成的片段数量不足15个,lst[1:15]会自动用NA填充空缺位置。如果你想避免NA,可以改用head(lst, 15),效果类似,但长度不足时不会补NA,仅返回现有全部元素。

内容的提问来源于stack exchange,提问作者quik1399

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:35:19