【问题标题】:Remove leading backslash from string R从字符串 R 中删除前导反斜杠
【发布时间】:2014-12-26 15:55:46
【问题描述】:

这是字符串:

> raw.data[27834,1]
[1] "\xff$GPGGA"

我尝试了以下两个问题的建议,但没有成功:

How to escape a backslash in R?

How to escape backslashes in R string

是否有人对上述问题有不同的解决方案可能会有所帮助?理想的解决方案是删除 "\xff" 部分,但对于任何字母组合。

【问题讨论】:

  • 或许gsub('.*([^A-Za-z].*)', '\\1',"\xff$GPGGA")#[1] "$GPGGA"
  • 效果很好,谢谢。任何文档都包含以这种方式指定字符的更多示例?
  • 请务必提供原始数据集中的示例和模式,以便对其进行测试。

标签: r string escaping


【解决方案1】:

该字符串中没有反斜杠。显示的反斜杠是转义标记。 ?Quotes 帮助页面中描述了有关“特殊情况”的输入和显示的此功能和其他功能。您已经获得了一种正则表达式而不是省略的删除方法。以下是其他几种方法....只有其中一些真正成功,因为\ff 是第一个“字符”,它作为 R 字符并不真正合法:

 s <- "\xff$GPGGA"
 strsplit(s, "")
#[[1]]
#[1] NA

Warning message:
In strsplit(s, "") : input string 1 is invalid in this locale

 substr(s, 1,1)
#Error in substr(s, 1, 1) : invalid multibyte string at '<ff>$GP<47>GA'
 gsub('.*([^A-Za-z].*)', '\\1',"\xff$GPGGA")#[1]
#[1] "$GPGGA"
 ?Quotes
 gsub('\xff', '',"\xff$GPGGA")#[1]
#[1] "$GPGGA"

我认为正则表达式函数不会阻塞该字符串的原因是正则表达式实际上是一个系统介导的过程,而 strsplitsubstr 是内部 R 函数。

@RichardScriven 发布了一个示例,当我尝试复制它时,我得到了一个不同的示例,显示到显示字符的映射是系统特定的。我在 OSX 10.10.1 (Yosemite)>

cat('\xff')
ˇ

(我省略了我通常会使用的八字形 (#)。)

【讨论】:

  • cat("\xff") 的输出可能会进一步支持这一点,即 �.
  • 不错。现在一切都说得通了。
猜你喜欢
  • 1970-01-01
  • 2015-03-28
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多