Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中同时使用带多个前缀的startsWith和str_length_R_Prefix_String Length_Startswith - Fatal编程技术网

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

如何在R中同时使用带多个前缀的startsWith和str_length,r,prefix,string-length,startswith,R,Prefix,String Length,Startswith,我想使用startsWith和str_length来标识endpt_ds$DX1中以dx9中的字符串开头且前缀长度大于或等于3的条目。这是我尝试过的,但它返回的数据帧为零行。我希望它返回包含原始数据帧的第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

我想使用startsWith和str_length来标识endpt_ds$DX1中以dx9中的字符串开头且前缀长度大于或等于3的条目。这是我尝试过的,但它返回的数据帧为零行。我希望它返回包含原始数据帧的第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
dx9=c(作为字符(8:10))

DX1一个选项是使用
nchar
检查字符数,创建一个逻辑表达式,此外,在“dx9”上使用
paste
,方法是使用
^
将其折叠为单个模式字符串,以指定字符串的开头,并使用
grepl
检查“DX1”,以返回通过这两个逻辑的行

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

一个选项是使用nchar检查字符数,创建一个逻辑表达式,此外,在“dx9”上使用
paste
,方法是使用
^
将其折叠为单个模式字符串,以指定字符串的开头,并使用
grepl
检查“DX1”,以返回通过这两个逻辑的行

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

固定的!(我在DX1中添加了一个右括号)是的,我不想让它返回第7行。好的,对不起,我正在检查您的前五个示例对不起,混淆了!固定的!(我在DX1中添加了一个右括号)是的,我不想让它返回第7行。好的,对不起,我正在检查您的前五个示例对不起,混淆了!嗨,阿克伦。不幸的是,这并不完全正确,因为我不希望它返回任何数字,只返回dx9中的数字。我对示例进行了编辑,以包含一个条目,该条目以不在dx9中的数字开头,长度为3,因此不应返回该条目,但它是由您的答案返回的。@abra如果它不在“dx9”中,为什么要返回第5行。它也以10开头?dx9包含10。dx9=c(as.character(8:10))dx9=c(8,9,10),因此我想要第5行returned@abra是的,第5行和第7行也有10作为起始前缀。我的观点是,如果你要删除7,为什么不能5现在它是完美的。非常感谢。嗨,阿克伦。不幸的是,这并不完全正确,因为我不希望它返回任何数字,只返回dx9中的数字。我对示例进行了编辑,以包含一个条目,该条目以不在dx9中的数字开头,长度为3,因此不应返回该条目,但它是由您的答案返回的。@abra如果它不在“dx9”中,为什么要返回第5行。它也以10开头?dx9包含10。dx9=c(as.character(8:10))dx9=c(8,9,10),因此我想要第5行returned@abra是的,第5行和第7行也有10作为起始前缀。我的观点是,如果你要删除7,为什么不能5现在它是完美的。非常感谢。