gpt4 book ai didi

r - 如果字符串包含某种模式则执行

转载 作者:行者123 更新时间:2023-12-01 22:21:01 26 4
gpt4 key购买 nike

给出了包含变量名称的以下向量:

variables = c("bla_P_blub","bla_K_blib","blo_P_blub","blu_I_blub","bli_K_blub")

我想做的是,如果variables[i]包含K,那么如果它包含P,则执行某事>我然后做某事。否则。

我的方法如下,但不起作用:

class_var = 1

if(grep("_K_",variables[i]) > 0){
class_var = 1
} else{
class_var = 0
}

if (class_var == 1){

do sth.

}

if (class_var == 0){

do sth. else

}

问题是如果variables[i]不包含K,那么我得到结果:

Error in if (grep("K", variables[12]) > 0) { : argument is of length zero

有什么建议吗?

提前致谢!

最佳答案

我将使用正则表达式来提取触发正确函数所需的信息,因此在您的情况下它是'_X_'
稍后我将使用重要信息迭代向量并使用开关。
您可以在 switch 中使用 {} 来执行更多功能,然后仅打印等...

variables = c("bla_P_blub","bla_K_blib","blo_P_blub","blu_I_blub","bli_K_blub")

myvars <- sub('.*_([A-Z])_.*', '\\1', variables)
for(myvar in myvars) {
switch(myvar,
P=cat('it is a P\n'),
K={
cat('it is a K\n')
cat(sprintf('%s\n',date()))
},
cat(sprintf('it was an %s\n', myvar)))
}

这将返回以下内容

it is a P
it is a K
Fri Jul 17 13:13:51 2015
it is a P
it was an I
it is a K
Fri Jul 17 13:13:51 2015

关于r - 如果字符串包含某种模式则执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31474287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com