如何导出gsub编辑的数据

How to export data edited by gsub

所以我最近了解了 gsub,我认为它可以为我创造奇迹,但我对此有点困惑。我想我只是没有使用它的经验。我有一堆脚本想 运行 在集群上,但是提交的作业的格式是特定的。所以我想使用 gsub 或类似的包来编辑 "master" 脚本。但是,当我 运行 gsub 时,它改变了我的数据结构。下面我举个例子。

这是我的 df 的一个例子。如果您在重新创建此文件时遇到问题,请告诉我,我不得不稍微调整一下 dput 输出。

dput(df)

df <- structure(list(V1 = c("#!/bin/bash", "#BSUB -W 2880", "#BSUB -n 8", "#BSUB -R span[ptile=8]", "#BSUB -o limaout.%J.txt", "#BSUB -e limaerr.%J.txt", "", "export PATH=$/bin:$PATH", "source activate anaCogent5.2", "", "lima /cell1.ccs.bam /primers.fasta /cell1.removed.ccs.bam --isoseq --no-pbi", "", "#BSUB -J lima.cell1")),
                .Names = "V1",
                row.names = c(NA, -13L),
                class = c("data.table", "data.frame"))

我运行下面的gsub来改变我需要改变的脚本部分

df <- gsub("cell1.ccs.bam", "cell2.ccs.bam", df)
df <- gsub("primers.fasta", "primers2.fasta", df)
df <- gsub("cell1.removed.ccs.bam", "cell2.removed.ccs.bam", df)
df <- gsub("#BSUB -J lima.cell1", "#BSUB -J lima.cell2", df)

但是,gsub 将我的数据框更改为一个值(如果这有意义吗?我正在使用 Rstudio,它会将 df 更改为)。当我 运行 以下

df <- as.data.frame(df)

进行了正确的替换,但数据的格式不再正确。看起来像这样。抱歉,这不是 dput 格式。数据以 dput 似乎不喜欢的格式放置

"c(\"#!/bin/bash\", \"#BSUB -W 2880\", \"#BSUB -n 8\", \"#BSUB -R span[ptile=8]\", \"#BSUB -o limaout.%J.txt\", \"#BSUB -e limaerr.%J.txt\", \"\", \"export PATH=$/bin:$PATH\", \"source activate anaCogent5.2\", \"\", \"lima /cell2.ccs.bam /primers2.fasta /cell2.removed.ccs.bam --isoseq --no-pbi\", \"\", \"#BSUB -J lima.cell2\")"

我使用 gsub 正确吗?或者有更好的包可以用吗?

gsub太棒了!很高兴你正在学习它。

现在正在将您的数据转换为字符串。如果您在当前 gsub 代码之后 运行 class(df),您会看到它已被转换为 character(即字符串)。

我的建议是遍历 V1 中的每一行并在其上应用您的 gsub 更改。这不是最快的方法,但可以完成工作:

for(i in 1:nrow(df)){
  df[i,'V1'] <- gsub("cell1.ccs.bam", "cell2.ccs.bam", df[i,'V1'])
  df[i,'V1'] <- gsub("primers.fasta", "primers2.fasta", df[i,'V1'])
  df[i,'V1'] <- gsub("cell1.removed.ccs.bam", "cell2.removed.ccs.bam", df[i,'V1'])
  df[i,'V1'] <- gsub("#BSUB -J lima.cell1", "#BSUB -J lima.cell2", df[i,'V1'])
}