基本上我的任务是在R中制作一个简单的电话簿。
我已经创建了一个大型数组,其中每个条目都遵循此模式(FirstName LastName PhoneNumber,FirstName LastName PhoneNumber等)
我需要对某些人的信息进行简单的打印,比如说名字是John,它会以john开头的所有索引返回给我。
我知道我需要一个if语句,但我不知道正确的语法,我只能识别字符串的开头。任何人都可以帮助我吗?
答案 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