我生成的文件是群集上作业的输出。每个文件都包含一个昏暗的100,3表。 我应该有1414个文件 - 但只有1413个。现在我想检查哪个文件丢失了。它们都标记为
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example</title>
<script>
var Vue = require('vue');
new Vue({
el: "#app",
data: {
collections: [
{"name": "test 1"},
{"name": "test 2"},
{"name": "test 3"}
]
}
});
</script>
</head>
<body id='app'>
</body>
</html>
喜欢
2 2 _ from : to
我可以以某种方式检查哪些1414文件丢失了吗?因此,R中的解决方案显然是理想的,但如果存在bash事件,我也很高兴
R就像
2 2 _ 1 : 100
2 2 _ 101 : 200
2 2 _ 201: 300
但仍然不知道哪些文件丢失了。
答案 0 :(得分:1)
这是一个想法:
gsub
扔掉&#34; 2 2 _:&#34;一部分。as.numeric
获取数字100,200,300等的向量v
which(diff(sort(v))>100)
找到洞。示例:的
> ww <- c( "2 2 _ 1:100", "2 2 _ 101:200", "2 2 _ 201:300", "2 2 _ 501:600", "2 2 _ 401:500" )
> v <- sapply( ww, function(x){ as.numeric(gsub("[^:]*:","",x)) } )
> which(diff(sort(v))>100)
2 2 _ 401:500
3
>
这意味着&#34; 2 2 _ 301:400&#34;不见了。 &#34; 2 2 _ 401:500&#34;是洞后的第一个文件。
有两个洞的例子:
> ww <- c( "2 2 _ 1:100", "2 2 _ 701:800", "2 2 _ 201:300", "2 2 _ 501:600", "2 2 _ 401:500", "2 2 _ 101:200" )
> v <- sapply( ww, function(x){ as.numeric(gsub("[^:]*:","",x)) } )
> which(diff(sort(v))>100)
2 2 _ 401:500 2 2 _ 701:800
3 5
>
这意味着&#34; 2 2 _ 301:400&#34;和2 2 _ 601:700&#34;&#34;缺少
无需对文件名的向量ww
进行排序。按sort(v)
答案 1 :(得分:0)
这样的事情:
z <- do.call(rbind, strsplit(gsub("[[:space:]]", "", ww), "_|:"))
你现在应该有z,看起来像这样:
[,1] [,2] [,3]
[1,] "22" "1" "100"
[2,] "22" "101" "200"
[3,] "22" "201" "300"
然后您可以按第二列不等于前一个第三列加一个的那些进行子集:
z[which(as.numeric(z[,2]) != as.numeric(lag(z[,3])) + 1), ]