【发布时间】:2020-09-19 20:32:33
【问题描述】:
我有一个问题,如何在 r 中编写一个循环来检查某个表达式是否出现在 string 中。所以我想检查表达式“i-sty”是否出现在我的变量中,对于 1:200 之间的每个 i,如果是这样,它应该给出相应的 i。
例如,如果我们有“4-sty”,则循环应该给我 4,如果变量中没有“i-sty”,它应该给我。用于观察。
我用过
for (i in 1:200){
datafram$height <- ifelse(grepl("i-sty", dataframe$Description), i, ".")
}
但它没有工作。我实际上只获得积分。附上我展示了字符串变量的图片。 enter image description here
【问题讨论】:
-
"i-sty" 只是一个字符串,其中包含字母
i。要对变量i使用正则表达式模式,您需要将一个字符串粘贴在一起,例如grepl(paste0(i, "-sty"), ...)。我还建议使用NA而不是"." 作为“else”结果 - 这样生成的height变量可以是数字。 -
欢迎来到Stack Overflow!请让您的示例可重现,阅读How to Ask 和stackoverflow.com/questions/5963269/…
-
x <- c("6-sty xxx", "4-sty yyyy", NA, "sty zzz", "32-sty xyz"); as.numeric(sub("^([0-9]+)-sty.*", "\\1", x))