R:循环应该从字符串返回数字元素
我有一个问题,如何在r中写一个循环来检查字符串中是否出现了某个表达式。所以我想检查表达式“I-sty”是否出现在我的变量中,每个I在1:200之间,如果这是真的,它应该给出相应的I 例如,如果我们有“4-sty”,循环应该给我4,如果变量中没有“i-sty”,它应该给我4。为了观察 我曾经R:循环应该从字符串返回数字元素,r,string,loops,for-loop,R,String,Loops,For Loop,我有一个问题,如何在r中写一个循环来检查字符串中是否出现了某个表达式。所以我想检查表达式“I-sty”是否出现在我的变量中,每个I在1:200之间,如果这是真的,它应该给出相应的I 例如,如果我们有“4-sty”,循环应该给我4,如果变量中没有“i-sty”,它应该给我4。为了观察 我曾经 for (i in 1:200){ datafram$height <- ifelse(grepl("i-sty", dataframe$Description), i, ".") } for(1
for (i in 1:200){
datafram$height <- ifelse(grepl("i-sty", dataframe$Description), i, ".")
}
for(1:200中的i){
datafram$height“i-sty”只是一个带有字母i
的字符串。要将正则表达式模式与变量i
一起使用,需要将字符串粘贴在一起,例如,grepl(paste0(i,“-sty”),…)
。我还建议对“else”使用NA
,而不是。
结果-这样产生的高度变量可以是数字
for (i in 1:200){
dataframe$height <- ifelse(grepl("i-sty", dataframe$Description), i, ".")
}
您同时使用datafram
和dataframe
。我假设dataframe
是正确的。“I-sty”只是一个带有字母I
的字符串。要将regex模式与变量I
一起使用,您需要将一个字符串粘贴在一起,例如,grepl(paste0(I,“-sty”),…)
。我还建议对“else”结果使用NA
而不是“
”,这样得到的height
变量可以是数字。欢迎使用!请使您的示例可复制,请阅读并x非常感谢您的帮助。您提出的代码对我来说非常适合[,1]。
library(stringr)
dataframe$height = str_match(string = dataframe$Description, pattern = "[0-9]+-sty")[, 2]
# might want to wrap in `as.numeric`