首页 > 解决方案 > 如何在 R 中自动化一系列脚本

问题描述

我正在使用一系列 R 脚本,这些脚本需要为 100 个文件运行 100 次。我正在尝试,但无法顺利完成任务。

我最初的命令是:

a1 <- data2haplohh(hap_file="file1.csv", polarize_vcf=FALSE)

其次是 :

a2<-subset(a1, min_maf=0.05)

其次是 :

a3<-scan_hh(a2, polarized=FALSE)

其次是:

a4<-ihh2ihs(a3, freqbin=100)
write.csv(a4, "newa.csv")

我试过这个,但它只适用于前 2 个步骤,并且在添加 a3 之后出现错误。

list2env(
setNames(
    lapply(
        seq(100),
        function(i) {
            subset(
                data2haplohh(hap_file = sprintf("file%s.csv", i), polarize_vcf = FALSE),
                min_maf = 0.05
            )
        }
    ), 
    paste0("a", seq(100))
),
envir = .GlobalEnv
)

你能帮我设置脚本吗?手动运行需要很长时间。谢谢

标签: rloops

解决方案


尝试这个?如果没有可重现的示例,就无法真正进行测试……而且您甚至都不会说出您遇到了什么错误。我也不知道您的大多数功能来自哪个包。

do_thing = function(file, output_suffix) {
  a1 <- data2haplohh(hap_file = file, polarize_vcf = FALSE)
  a2 <- subset(a1, min_maf=0.05)
  a3 <- scan_hh(a2, polarized=FALSE)
  a4 <- ihh2ihs(a3, freqbin=100)
  write.csv(a4, paste0("new", output_suffix, ".csv")
}

for(i in 1:100) {
  do_thing(file = sprintf("file%s.csv", i), output_suffix = i)
}

推荐阅读