如何在 R 中同时使用 startsWith 和 str_length 和多个前缀

How to use startsWith and str_length simultaneously with multiple prefixes in R

我想使用 startsWith 和 str_length 来识别 endpt_ds$DX1 中以 dx9 中的字符串开头且前缀长度大于或等于 3 的条目. 这是我尝试过的方法,但它 return 是一个零行的数据框。我想要 return 一个数据框,其中包含原始数据框的第 1、4 和 5 行:

dx9 = c(as.character(8:10))
DX1 <- c("8001","7","80","992","1010","93","400")
ind <- c(0,1,1,1,0,0,1)
yrMonth_ds = as.data.frame(cbind(DX1,ind))
yrMonth_ds$DX1 <- as.character(yrMonth_ds$DX1)
yrMonth_ds_endpt <- yrMonth_ds[which(startsWith(yrMonth_ds$DX1,paste0(dx9,collapse="|")) & str_length(yrMonth_ds$DX1 > 3)),]
yrMonth_ds_endpt

如果有任何帮助,我将不胜感激。谢谢!

一个选项是用 nchar 检查字符数,用它创建一个逻辑表达式,此外通过将 'dx9' 折叠成一个模式来使用 paste使用 ^ 指定字符串开头的字符串,并使用 grepl 到 return 检查 'DX1' 通过两个逻辑

的行
subset(yrMonth_ds, nchar(DX1) >=3  & 
     grepl(paste0("^(", paste(dx9, collapse="|"), ")"), DX1))
#    DX1 ind
#1 8001   0
#4  992   1
#5 1010   0