r - 向量中循环数据的完整性检查
问题描述
我有一个长度为“l”的向量,它必须由一个严格指定的循环序列组成,例如“1 2 3”
x <- c(1,2,3,1,2,3,1,2,3,1,3,1,2,3,1,2,3,1,2,3,1,2,3,2,3,1,2,3,1,2,3,1,2,3,1,2,3)
但它包含空白,例如:“1 3”或“2 3”或其他类似的序列违规变体,我如何才能找到序列中的错误并删除那些不完整的序列?
解决方案
你可以通过循环来消除你的“差距” x
。修改seq
以下代码以扫描您喜欢的任何序列。
x <- c(1,2,3,1,2,3,1,2,3,1,3,1,2,3,1,2,3,1,2,3,1,2,3,2,3,1,2,3,1,2,3,1,2,3,1,2,3)
seq = c(1,2,3)
l = 1
while(TRUE){
### check if a new sequence starts
if(x[l]==seq[1]){
counter = 0
### count elements of the sequence candidate
while(TRUE){
### break if new sequence starts or if vector is completly scanned
if(x[l+counter+1] %in% c(1,NA)) break
counter = counter + 1
}
### remove current sequence if not identical to seq
if(!identical(x[l:(l+counter)],seq)){
x = x[-(l:(l+counter))]
l = l - counter
next
}
}
l = l + 1
### finish if vector completly scanned
if(l > length(x)) break
}
推荐阅读
- javascript - 仅设置某些项目时如何查询缓存?
- amazon-web-services - boto3 会话持续多长时间?在我的服务中,我希望从多个区域获取实例并考虑为每个区域创建一个会话
- terraform - 如何使用 Terraform 调整 vmWare Cloud Director 中的计算机名称属性?
- r - 在 r 中最大化/优化具有约束的函数
- typescript - mathjs 数字只有打字稿?
- swift - 在 ReactiveSwift 中同步组合属性
- python - 如何通过python中的正则表达式替换/修改模式?
- c# - 在 for 循环中存储数据
- html - 让 div 在屏幕底部而不是在父底部
- javascript - 如何过滤 Firebase 和 Ionic 中的数据?