【问题标题】:Problems and error in strsplitstrsplit 中的问题和错误
【发布时间】:2015-11-18 17:22:25
【问题描述】:

我使用以下命令:

 sequence <-  '<{EADFE20F543836047330DEFFB893127AF536560121698ADE2FCE6985E07A40D8 SELECT;DD2E595CF23E65E128560B655E0C6848 SELECT}>'
v1 <- trimws(gsub('[[:punct:]]+', '', sapply(strsplit(sequence, '(?<=\\})(?=\\{)|[[,;]', perl=TRUE), tail, 1)))

我想得到整个字符串,但是我只得到了字符串的一部分:

v1 [1]“F73431225ED64969DC4BEBD06092FD6F 选择”

所需的输出是

之间的字符串内容

我必须做什么才能更改它以获取所有字符串?

此外, 如果我使用而不是数据框的字符串序列列,则会收到以下错误:

Error in strsplit(RES1$sequence, "(?<=\\})(?=\\{)|[[\\,\\;]", perl = TRUE) : 
  non-character argument

这是 RES1$sequence 的头部:

> head (RES1$sequence)
[1] <{EADFE20F543836047330DEFFB893127AF536560121698ADE2FCE6985E07A40D8 SELECT;DD2E595CF23E65E128560B655E0C6848 SELECT}>        
[2] <{F73431225ED64969DC4BEBD06092FD6F SELECT}>                                                                                
[3] <{88FFF14FDD46ED862DAEB36F8D0F6215 SELECT}>                                                                                
[4] <{1C9AAE933F916BA94B5D2B5FA320E05D85C780CD1A9922E26BC1FB7C422F42B2 SELECT}>                                                
[5] <{3FCC23C2562BE9926049EAF2D88CD3D4 SELECT;314CD91DCA8849C64DCEACBA2E3B65B7 SELECT;09E9146A444AE1C47B8E4139D6D69A48 SELECT}>
[6] <{184E7C8929FC9CEA72EF21D99CDC40D9 SELECT}>                                                                                
20 Levels: <{\\N}> ... <{F73431225ED64969DC4BEBD06092FD6F SELECT}>
> class (RES1)
[1] "data.frame"

【问题讨论】:

  • 谢谢。我添加了所需的结果。
  • gsub("[\\&lt;{\\&gt;}]", "", sequence) 这样的问题已经被问过很多次了。您也可以查看herehere 以获得更多选择

标签: r strsplit


【解决方案1】:

“想要的输出是之间的字符串的内容”,何乐而不为:

gsub('<\\{(.*)\\}>', '\\1', sequence)
#[1] "EADFE20F543836047330DEFFB893127AF536560121698ADE2FCE6985E07A40D8 SELECT;DD2E595CF23E65E128560B655E0C6848 SELECT"

【讨论】:

    猜你喜欢
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 2013-08-23
    • 2011-04-16
    • 2022-01-10
    相关资源
    最近更新 更多