Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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:循环应该从字符串返回数字元素_R_String_Loops_For Loop - Fatal编程技术网

R:循环应该从字符串返回数字元素

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

我有一个问题,如何在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: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`