Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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
Regex 如何在正则表达式中包含对象 namez_Regex_R_Object - Fatal编程技术网

Regex 如何在正则表达式中包含对象 namez

Regex 如何在正则表达式中包含对象 namez,regex,r,object,Regex,R,Object,看起来您需要为grepl()创建一个字符向量,使用paste0()似乎是可行的,但不是那么优雅: namez <- c("foo2003", "bar2340", "naught45") patternz <- "03" grepl("[patternz]$",namez) 包裹gsubfn是你的朋友 > grepl(paste0("[", patternz, "]$"), namez) [1] TRUE TRUE FALSE 这样更合适 也 在这种情况下,可能更合适,

看起来您需要为
grepl()
创建一个字符向量,使用
paste0()
似乎是可行的,但不是那么优雅:

namez <- c("foo2003", "bar2340", "naught45")
patternz <- "03"
grepl("[patternz]$",namez)

包裹
gsubfn
是你的朋友

> grepl(paste0("[", patternz, "]$"), namez)
[1]  TRUE  TRUE FALSE
这样更合适


在这种情况下,可能更合适,因为
$
具有双重含义。

必须承认,很难看出问题所在。因为这个例子只说明了

fn$grepl("`patternz`$",namez)
或者通过
paste0()
操作

R> patternz2 <- "03$"
R> grepl(patternz2, namez)
[1]  TRUE FALSE FALSE

问题是使用
patternz
,因为实际的regexp和base R函数可以完美地处理这个问题。

Nice one@ttmaccer,但我所期望的结果是TRUE-FALSE。你知道如何实现吗?gsubfn的软件包很简单,但这里有点过头了。我想当提问者感到高兴时,这是合适的,基于此,我认为它符合条件。等等。为什么要在“[”/“]”中加“?@DWin-我显然误解了OP的问题,认为这意味着他的字符串“03”应该作为字符类进行匹配。我猜他是在用
[]
试图告诉R应该找一个名为
patternz
的对象。我知道,但这不是一个静态站点,似乎没有人费心更新他们的答案以适应不断发展的讨论。@GavinSimpson我以为可以通宵睡觉?我在澳大利亚!有,后编辑:)@丹尼尔马查多在睡觉?这在这里是不受欢迎的。说得清楚一点,你应该接受你想要的、最适合你的答案。其他答案在这里为其他有类似问题的人提供。如果你对最初的接受感到满意,那就坚持下去。投票和接受是两件不同的事情。@shhhimhuntingrabbits,可读性胜过性能上的微小提升。这就是我选择您的解决方案的原因。但是我会选择Gavin的一个,因为除了使用标准库之外,它还会在变量内部而不是周围创建正则表达式。这是非常简单和优雅的。
fn$grepl("`patternz`$",namez)
R> namez <- c("foo2003", "bar2340", "naught45")
R> patternz <- "03"
R> grepl(patternz, namez)
[1]  TRUE FALSE FALSE
R> patternz2 <- "03$"
R> grepl(patternz2, namez)
[1]  TRUE FALSE FALSE
R> grepl(paste0(patternz, "$"), namez)
[1]  TRUE FALSE FALSE