如何查找和替换字符向量中的数字行?

时间:2015-06-02 10:30:10

标签: r

我想知道如何排除行,这些行只有数字作为字符向量中的内容。我想保留以下格式的变量:

                               123_john-dallas
                               222_Michael Berlin
                               45678_thomas-Karlsruhe

使用以下格式删除数据:

                                122345
                                12567:1992
                                120388;20:34
                                394,21:33

来自一个单一的字符向量。所需格式的共同主题似乎是下划线'_'因此我尝试捕获它失败:

一些数据:

                        seed(1000)

                        string<- function(n=1000, lenght=10)
                         {
                                   random <- c(1:n)                  
                                   for (i in 1:n)
                         {
                         random[i] <- paste(sample(c("AbcD","_", 1:9),
                                lenght, replace=TRUE),
                                collapse="")
                                          }
                          return(random)
                         }
                         characterNumber<-string()

                        character<-grep(characterVector,'_')

但我只是一个空的载体。

2 个答案:

答案 0 :(得分:3)

如果您想保留包含_的所有值,可以像这样使用grep

characterNumber[grep("_", characterNumber)]

或者,如果您要排除包含数字的所有元素:;,,您可以尝试以下内容:

characterNumber[!grepl("^[0-9:;,]+$", characterNumber)]

答案 1 :(得分:1)

如果mystr是你的角色向量,你可以尝试要求只保留包含字母的字符串:

mystr[grepl("[a-zA-Z]", mystr)]

实施例

mystr <- c("123_john-dallas", "222_Michael Berlin", "45678_thomas-Karlsruhe","122345", "12567:1992", "120388;20:34", "394,21:33")

mystr[grepl("[a-zA-Z]", mystr)]
#[1] "123_john-dallas"        "222_Michael Berlin"     "45678_thomas-Karlsruhe"