【问题标题】:removing everything after first 'backslash' in a string删除字符串中第一个“反斜杠”后的所有内容
【发布时间】:2013-06-19 09:22:35
【问题描述】:

我有一个像下面这样的向量

vec <- c("abc\edw\www", "nmn\ggg", "rer\qqq\fdf"......)

我想在遇到第一个斜线后立即删除所有内容,如下所示

newvec <- c("abc","nmn","rer")

谢谢。

我的原始向量如下(只有头部)

[1] "peoria ave\nste \npeoria"                      [2]   "wood dr\nphoenix"                                  
"central ave\nphoenix"                            
[4] "southern ave\nphoenix"                         [5]   "happy valley rd\nste   
\nglendaleaz "               "the americana at brand\n americana way\nglendale"

这里的问题是我的原始 csv 文件不包含反斜杠,但是当我阅读它时会出现反斜杠。原始csv文件如下

[1] "peoria ave               [2] "wood dr
     nste                          nphoenix"       
     npeoria"

如您所见,它们实际上由“ENTER”分隔,但是当我在 R 中使用 read.csv() 读取它时,它们被反斜杠替换。

【问题讨论】:

  • 您应该编辑您的字符串以显示它在r 中的实际表示方式,(即转义的反斜杠\\
  • 您提供的代码无法在 R 中复制。另外,您谈论斜杠并提供反斜杠?如果你想添加反斜杠,你应该加倍它们。喜欢vec &lt;- c("abc\\edw\\www")
  • @SanderVanderZeeuw 我提供了更多信息,请仔细阅读。我认为反斜杠实际上并不存在。当我在 R 中阅读它们时,它们就会出现。
  • @user2474387 尝试使用read.table('blabla.csv',sep=",")
  • 在对数据进行任何操作之前,请尝试cat(vec, sep="\n") 并检查您得到的结果。我怀疑数据很好,您对print 使用\n 表示换行感到困惑。

标签: r vector gsub stringr


【解决方案1】:

另一种解决方案:

 sub("\\\\.*", "", x)

【讨论】:

    【解决方案2】:
    vec <- c("abc\\edw\\www", "nmn\\ggg", "rer\\qqq\\fdf")
    sub("([^\\\\])\\\\.*","\\1", vec)
    [1] "abc" "nmn" "rer"
    

    【讨论】:

      【解决方案3】:

      strssplit(vec, "\\\\") 应该可以完成这项工作。

      选择第一个元素[[1]][1] 第二个[[1]][2]

      【讨论】:

        猜你喜欢
        • 2018-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-28
        相关资源
        最近更新 更多