R中缺少文件

时间:2015-12-27 16:18:25

标签: r bash sed

我生成的文件是群集上作业的输出。每个文件都包含一个昏暗的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

但仍然不知道哪些文件丢失了。

2 个答案:

答案 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), ]