Как заменить обратную косую черту на прямую косую черту для всего файла CSV в R? - PullRequest
2 голосов
/ 18 июня 2019

У меня есть простой скрипт R:

file1 <- read.csv2("D:/Home/file1.csv", strip.white = TRUE, header = FALSE)
file2 <- read.csv2("D:/Home/file2.csv", strip.white = TRUE, header = FALSE)

df <- merge(file1, file2, by.x = c(2), by.y = c(1)) 

df2 <- data.frame(new_col = paste('"', df$V2, '#', df$V1, '#', df$V2.y, '",', sep = ""))

write.table(df2, append = FALSE, file = outFile, sep = "#", quote = FALSE, row.names = FALSE, col.names = FALSE)

Файл 1 выглядит так:

100;folder/path/myfile.mp3
101;folder/path/anotherfile.mp3
102;folder/path/finalfile.mp3

Файл 2 выглядит так:

folder\path\myfile;64
folder\path\anotherfile;58
folder\path\finalfile;34

ИтакМой сценарий объединяет файл 1 с файлом 2 на основе столбца пути (второй столбец в файле 1 и 1-й столбец в файле 2).Это нормально, если оба файла имеют прямую косую черту для каждой строки.

Проблема заключается в том, что файл 1 имеет прямую косую черту, а файл 2 имеет обратную косую черту, поэтому слияние не работает.

Как сделатьЯ делаю так, чтобы слияние сработало, учитывая, что они оба используют разные косые черты?Другими словами, как я могу преобразовать весь файл2 для использования прямой косой черты до слияния?Мне нужен конечный результат, чтобы использовать прямые косые черты, а не обратную косую черту.

Я просмотрел множество других вопросов и ответов, и замена обратной косой черты на прямую косую черту уже задавалась ранее, но только для строк.Я не могу найти вопрос, спрашивающий, как заменить каждый слеш во всем исходном CSV-файле.Поэтому я не верю, что это дубликат.

Большое спасибо.

Ответы [ 2 ]

4 голосов
/ 19 июня 2019

Это должно работать:

file2$column = gsub(pattern = "\\\\", replacement = "/", x = file2$column)

Заменить column в моем коде на любое имя столбца.

2 голосов
/ 19 июня 2019

Еще одним регулярным выражением может быть следующее.

x <- 'a\\b\\c'
gsub('[\\]', '/', x)
#[1] "a/b/c"

Или, используя аргумент fixed = TRUE,

gsub('\\', '/', x, fixed = TRUE)
#[1] "a/b/c"

Теперь нужно применить вышеизложенное к столбцу (ам)кадра данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...