【问题标题】:Using linux system commands in R to remove special characters在 R 中使用 linux 系统命令删除特殊字符
【发布时间】:2015-03-08 11:00:35
【问题描述】:

我正在尝试使用 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;

【问题讨论】:

    标签: linux r sed


    【解决方案1】:

    如果文件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
    

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

    【讨论】:

    • 这很棒,正是我所追求的。谢谢你
    • 我能再问一件事吗,您是否知道任何文档以了解更多关于这方面的信息 - 它显然非常强大,但我发现很难获得一些好的资源
    • @SamGilbert - 我家里有几本非常不错的参考手册。但我也使用unix.stackexchange.com 来查找使用示例。参考手册并不总是提供我找到的好例子。
    • 我使用的手册之一是The Linux Essential Reference。几乎没有示例,但它基本上是所有重要 linux 命令的字典
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-06-24
      • 1970-01-01
      • 2018-06-13
      • 2019-04-01
      • 1970-01-01
      • 2014-09-15
      • 2017-12-20
      • 1970-01-01
      • 2014-03-05
      相关资源
      最近更新 更多