具有多个变量的R路径

问题描述 投票:1回答:1

我有一些这种格式的目录和文件

/home/scratch/test/123/local/test.vcf.gz
/home/scratch/test/456/local/test.vcf.gz
/home/scratch/test/789/local/test.vcf.gz

我有一段代码片段,基本上指向这些目录,并将所有test.vcf.gz合并到Rdata中,但是这部分代码引发错误

dat = read_csv("input.csv") %>% 
  gather(pipeline, id,  `SRS`) %>% 
  mutate(pipeline_clean = c("SRS" = "main")[pipeline]) %>% 
  mutate(output = sprintf("/home/scratch/test/%s/local/%s", id)) %>% 
  mutate(Group.Id = sprintf("%s_%s_%s_%s", prep, platform, pipeline_clean, ref))

Error: Problem with `mutate()` input `output`.
x too few arguments
ℹ Input `output` is `sprintf(...)`.

但是当我将输出目录更改为/home/scratch/test/123/local/%s时,它不会引发任何错误。我假设可以使用%s为多个变量提供路径,任何建议都将有所帮助。

谢谢

r path operators relational
1个回答
1
投票

如果要多次插值相同的值,即%s重复两次,则需要重复sprintf中的参数

...
  mutate(output = sprintf("/home/scratch/test/%s/local/%s", id, id)) %>%
...

如果后缀始终为test.vcf.gz,那么我们可以删除最后一个%s

  mutate(output = sprintf("/home/scratch/test/%s/local/test.vcf.gz", id)) 
© www.soinside.com 2019 - 2024. All rights reserved.