r - 如何检查一系列值是否在带有 for 循环的向量中。R
问题描述
我想根据它们是否在向量中对值进行分类。我已经尝试了各种方式,但它仍然无法正常工作。
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'))
}
}
我希望输出是
c("Extreme", "Extreme", "Reasonable", "Reasonable", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier")
挑战在于这个函数只是返回
c("Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier", "Non-Outlier")
我在使用过滤器捕获值时遇到问题,我不确定如何比较一个值是否等于向量中的一个值。
解决方案
你可以sapply
在这里使用:
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"
推荐阅读
- amazon-web-services - Amazon S3 存储桶策略拒绝 iam 用户
- c++ - C ++类成员递归指针?我猜
- ringcentral - BOT 代币是否可用于 RingCentral BOT 应用程序
- flutter - Getx 永久控制器再次初始化
- vue.js - 当在 vuejs 中选择另一个选择框值时,如何有条件地设置 bootstrap-vue 选择框值?
- python - Flask,flask-jwt-extended - 尝试自定义处理未经授权的错误
- c# - XUnit C#-如何测试在 lambda 中调用的方法
- amazon-web-services - 如何从 CfnStack 中获取资源?
- sqlite - 无法访问 sqlite Ionic 中的临时表
- java - Hazelcast - 当我们迁移到 Hazelcast 4 时,存储在近缓存(客户端)中的对象会很快被驱逐