Как экспортировать данные, отредактированные gsub - PullRequest
0 голосов
/ 02 апреля 2019

Итак, я недавно узнал о 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?Или есть лучшие пакеты для использования?

1 Ответ

1 голос
/ 02 апреля 2019

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'])
}
...