我有一个数据框:
df <- data.frame(name=c("john", "david", "callum", "joanna", "allison", "slocum", "lisa"), id=1:7)
df
name id
1 john 1
2 david 2
3 callum 3
4 joanna 4
5 allison 5
6 slocum 6
7 lisa 7
我有一个包含正则表达式的向量,我希望在 df$name 变量中找到它:
vec <- c("lis", "^jo", "um$")
我想要得到的输出如下:
name id group
1 john 1 2
2 david 2 NA
3 callum 3 3
4 joanna 4 2
5 allison 5 1
6 slocum 6 3
7 lisa 7 1
我可以执行以下操作:
df$group <- ifelse(grepl("lis", df$name), 1,
ifelse(grepl("^jo", df$name), 2,
ifelse(grepl("um$", df$name), 3,
NA)
但是,我想直接从“vec”执行此操作。我正在一个闪亮的应用程序中反应性地向 vec 生成不同的值。我可以根据 vec 中的索引分配组吗?
此外,如果发生如下情况,该组应该是第一个出现的。例如对于“all”和“um$”,“Callum”为 TRUE,但此处应为组 1。
vec <- c("all", "^jo", "um$")