所以我最近了解了gsub
,我认为它可以为我带来奇迹,但是对此我有些困惑。我想我只是没有经验。我有一堆要在群集上运行的脚本,但是要提交的作业的格式是特定的。因此,我想使用gsub
或类似软件包来编辑“主”脚本。但是,当我运行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
吗?还是有更好的软件包可供使用?
答案 0 :(得分:1)
gsub
很棒!很高兴您正在学习。
现在发生的事情是您的数据正在转换为字符串。如果您在当前的class(df)
代码之后运行gsub
,则会看到它已被转换为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'])
}