首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用for循环检查一系列值是否在向量中。R

如何使用for循环检查一系列值是否在向量中。R
EN

Stack Overflow用户
提问于 2019-01-09 06:48:12
回答 1查看 29关注 0票数 0

我想根据值是否在向量中对值进行分类。我尝试了似乎所有的方法,但它仍然不起作用。

代码语言:javascript
复制
orig_vector <- c(0.00632, 0.02731, 0.02729, 0.03237, 0.06905, 0.02985, 0.08829, 0.14455, 0.21124, 0.17004)

cat_vector  <- c(0.00632, 0.02731, 0.02729, 0.03237)

for(j in 1:length(orig_vector)){
  ifelse(orig_vector[j] %in% cat_vector[1:2], orig_vector[j] <- 'Extreme',
         ifelse(orig_vector[j] %in% cat_vector[3:length(cat_vector)], orig_vector[j] <- 'Reasonable',
                orig_vector[j] <- 'Non-Outlier'))
  }         
}

我希望输出是

代码语言:javascript
复制
c("Extreme", "Extreme", "Reasonable", "Reasonable", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier")

挑战在于这个函数只返回

代码语言:javascript
复制
c("Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier")

我在使用过滤器捕获这些值时遇到了问题,我不知道如何比较一个值是否等于向量中的一个值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-09 10:24:26

您可以在此处使用sapply

代码语言:javascript
复制
output <- sapply(orig_vector, function(x){

    if(x %in% cat_vector[1:2]) return('Extreme')

    else if (x %in% cat_vector[3:length(cat_vector)]) return('Reasonable')

    else return('Non-Outlier')
})

print(output)

 [1] "Extreme"     "Extreme"     "Reasonable"  "Reasonable"  "Non-Outlier" "Non-Outlier"
 [7] "Non-Outlier" "Non-Outlier" "Non-Outlier" "Non-Outlier"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54100823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档