在R中使用linux系统命令去除特殊字符

Using linux system commands in R to remove special characters

我正尝试在 R

中使用 linux 系统命令清理文件

我想使用一个命令来删除除文件分隔符(竖线分隔)之外的特殊字符

在下面的示例中,我试图去掉的是斜杠和附加引号

1234|"PJDG"|"CHOCOLATES"|"CHOCOLATE CAKE"
1256|"GADG"|"CAKE \"HA"|"SPECIAL \"HAPPY CHRISTMAS\""
7657|"ASGD"|"WINE"|"RED WINE"
6777|"DAG"|"FRUIT"|"APPLES/LOOSE"

我使用了下面的命令,但它似乎没有删除字符。

sed 's/\"?//g' input_file.txt > output_file.txt;

R系统有自己的功能,不需要使用系统。看看 subgsub。使用 readLines 读取您的文件,通过 subgsub 对其进行编辑,然后将生成的结构保存回单独的文件。

如果文件 x.txt 看起来像这样

cat(readLines("x.txt"), sep = "\n")
# 1234|"PJDG"|"CHOCOLATES"|"CHOCOLATE CAKE"
# 1256|"GADG"|"CAKE \"HA"|"SPECIAL \"HAPPY CHRISTMAS\""
# 7657|"ASGD"|"WINE"|"RED WINE"
# 6777|"DAG"|"FRUIT"|"APPLES/LOOSE"

然后你可以在system()中使用sed,像这样

system("sed -e 's|[\\"]||g' x.txt")
# 1234|PJDG|CHOCOLATES|CHOCOLATE CAKE
# 1256|GADG|CAKE HA|SPECIAL HAPPY CHRISTMAS
# 7657|ASGD|WINE|RED WINE
# 6777|DAG|FRUIT|APPLES/LOOSE

您可以将其写入文件。或者如果你想 return 一个 R 向量,添加 intern = TRUE 到调用