【问题标题】:Looping over an R function循环一个 R 函数
【发布时间】:2020-08-02 01:01:51
【问题描述】:

我在 R 中有一个函数,它接收一个 .vcf 文件并对其进行解析。

例如

x <- "file1.vcf"

file1.parsed <- parse_vcf_alt1(x)

我在一个文件夹中有 177 个 .vcf 文件。

它们看起来像这个文件

https://www.dropbox.com/s/lcdmk57sy3dxexp/file1.vcf?dl=0

我想将这些 .vcf 文件中的每一个一个一个地输入到parse_vcf_alt1 函数中,并从中获取一个已解析的文件。

手动执行此操作很痛苦。

如何在 R 中自动执行此操作?

这段代码给出了输出

lapply(dir(), function(f) { if grep('vcf', f) { parse_vcf_alt1(f) }})

但我不知道如何使用自己的名称分别为每个已解析的 vcf 保存或写入输出。

> dput(frame)

 structure(list(), .Names = character(0), row.names = integer(0), class = "data.frame") > 

【问题讨论】:

  • 欢迎来到 StackOverflow!,请问您是否可以在 file1.vcf 中看到您的数据? Taht 帮助我们帮助您并使问题可重现。
  • 谢谢,这是我的一个文件的链接dropbox.com/s/lcdmk57sy3dxexp/file1.vcf?dl=0

标签: r loops for-loop genome vcf-variant-call-format


【解决方案1】:
frame <- data.frame()
lapply(dir(), function(f) { if(grep('vcs', f)) { frame[f] <- parse_vcf_alt1(f) }})
write.csv(frame, 'filename.csv')

dir 返回文件列表,grep 检查它们的名称并在匹配时调用 parse_vcf。 frame[f] 将它分配给数据框的一列,之后可以使用 frame$vcs.hd1.vcf 或任何文件名来检索它。最后,write.csv 会将你的结果写入当前目录下的 filename.csv。

【讨论】:

  • 抱歉说 > lapply(getwd(), function(f) { if grep('vcf', f) { parse_vcf_alt1(f) }}) 错误:“lapply(getwd() , function(f) { if grep
  • 使用 dir,而不是 getwd?
  • 谢谢,但我不知道输出到哪里。我已经发布了结果。我们如何将每个文件的输出分别写入或保存到某个位置,以便能够找到它们?
  • 谢谢你我编辑了,如果可能的话,请帮助我,因为在解析每个文件后,我需要将它们分别保存到某个地方
  • 谢谢你把每个文件都推到了哪个列表中,我怎么能把那个写到单独的文件中呢?例如 results[1] 用于第一个文件, results[2] 用于第二个文件,但我不知道如何将它们分开并将它们独立地写为 .csv 或表格
猜你喜欢
  • 2021-01-18
  • 2021-11-09
  • 2019-07-26
  • 2019-11-16
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-27
相关资源
最近更新 更多