【问题标题】:Issue with a column containing special characters包含特殊字符的列出现问题
【发布时间】:2016-03-23 20:16:34
【问题描述】:

我在 R 中有一个数据框,其中包含 类型字符,其值如下

"\"121.29\""
"\"288.1\""
"\"120\""
"\"V132.3\""
"\"800\""

我正在尝试去掉多余的 " 和 \ 并保留如下的干净值

121.29
288.10
120.00
V132.30
800.00

我试过gsub("([\\])","", x) 也试过str_repalce_all 功能到目前为止没有运气。如果有人能帮我解决这个问题,我将不胜感激。提前致谢。

【问题讨论】:

    标签: r string gsub


    【解决方案1】:

    试试

    gsub('\\"',"",x)
    [1] "121.29" "288.1"  "120"    "V132.3" "800" 
    

    由于第四个条目不是数字,并且原子向量只能包含相同模式的条目,因此在这种情况下,条目都是字符(能够存储数据的最灵活的模式)。所以每个条目周围仍然会有引号。

    因为\是一个特殊字符,需要用反斜杠转义,所以表达式\\"作为第一个参数传递给gsub()。此外,正如@rawr 所建议的,可以使用单引号来解决双引号。 另一种方法是使用双引号并将它们转义:

    gsub("\\\"","",x)
    

    产生相同的结果。

    希望这会有所帮助。

    【讨论】:

    • 不只是gsub('"', "", '"\"800\""') 工作(正如@rawr 已经提到的)?
    • @DavidArenburg 是的,它会工作。您建议的答案要短两个字符。我更喜欢我的建议,因为我觉得它更清楚。它会删除反斜杠,而不是使它们在输出中不可见。
    • 我不认为反斜杠真的存在。这只是一种打印方法。尝试在控制台中输入'"800"'
    • 这不是语义,它用于转义字符。你不能只在 R 中做"\"
    • 您可以,正如您对gsub('"', "", '"\"800\""') 所建议的那样,但我认为如果它们没有转义任何内容,将这些转义字符保留在字符串中没有多大意义。这就是为什么我认为这个问题的正确答案也包括删除反斜杠。
    猜你喜欢
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多