如何在R中搜索字符串的一部分

时间:2018-03-01 22:48:46

标签: r

基本上我的任务是在R中制作一个简单的电话簿。

我已经创建了一个大型数组,其中每个条目都遵循此模式(FirstName LastName PhoneNumber,FirstName LastName PhoneNumber等)

我需要对某些人的信息进行简单的打印,比如说名字是John,它会以john开头的所有索引返回给我。

我知道我需要一个if语句,但我不知道正确的语法,我只能识别字符串的开头。任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:0)

x <- c('Mary Higgins', 'John Williams', 'Zhu Wang', 'Peter Johnson')
# all elements containing John
grep('John', x)
#[1] 2 4
# starting with John
grep('^John', x)
#[1] 2

答案 1 :(得分:0)

从这个问题:Test if characters in string in R

chars <- "test"
value <- "es"

grepl(value, chars)

答案 2 :(得分:0)

你不需要if语句,我会尽量避免使用if语句(它们很慢,有时候也很复杂)。你可以尝试:

data <- data.frame(FirstName = c('Mary', 'John', 'Zhu', 'Peter'), 
                LastName = c('Higgins', 'Williams', 'Wang', 'Johnson'), 
                PhoneNumber = c("234-234-2342", "456-456-4564", "678-678-6788", "345-345-3455"))
data %>%
  filter(FirstName == "John")

答案 3 :(得分:0)

您可以使用带有^的正则表达式来指定John位于字符串的最开头。如,

names <- c("John Hogg", "Hogg John")
grep("^John", names)

[1] 1

或者,您可以使用startswith

startsWith(names, "John")

[1]  TRUE FALSE