代码之家  ›  专栏  ›  技术社区  ›  hj14

查找R中信息不完整的.txt文件

  •  0
  • hj14  · 技术社区  · 12 年前

    我有一个.txt文件的文件夹。每个.txt文件中的一个列被称为“Row”(很抱歉,这很令人困惑)。“Row”列包含值A到H。

    我正在尝试编写一些可以在每个.txt文件中运行的东西,以检查文件中是否存在从A到H的所有值。我希望这个函数告诉我哪个.txt文件不完整(缺少一些值)。我不必知道它缺少什么。。。我只需要知道哪个.txt文件没有从A到H的所有值。

    有办法做到这一点吗?

    提前谢谢你~

    编辑

    下面是我正在处理的数据示例。这来自数据帧列表中的第一个数据帧。这是在我已经将每个.txt文件制作成一个数据帧之后。

          row col TOF  EXT time green yellow red         worm call50    norm.red stage
    1      A   1  20   20    0     2      0   0 1.922668e-02 bubble 0.000000000    L1
    2      A   1  32   45  358     6      6   3 9.637690e-01   worm 0.093750000    L1
    3      A   1  24   30 1185     6      1   0 2.246214e-02 bubble 0.000000000    L1
    4      A   1 139  230 2433    39     49  31 1.000000e+00   worm 0.223021583    L2
    5      A   1  27   23 2433     3      4   2 8.262885e-01   worm 0.074074074    L1
    6      A   1  24   25 3946     3      4   3 9.077824e-01   worm 0.125000000    L1
    7      A   2  40   55    0    30     46  29 1.000000e+00   worm 0.725000000    L1
    8      A   2  31   34 2793     3      2   0 1.100591e-01 bubble 0.000000000    L1
    9      A   3  37   42    0     8      9   5 9.996614e-01   worm 0.135135135    L1
    10     A   3  89  172  562    28     38  20 1.000000e+00   worm 0.224719101    L1
    ...
    648    B   1 124  160    0    11      8   4 9.999695e-01   worm 0.032258065    L2
    649    B   1 125  211   47    13     11   4 9.999610e-01   worm 0.032000000    L2
    650    B   1  65  112  141     6      4   3 9.404593e-01   worm 0.046153846    L1
    
    1 回复  |  直到 12 年前
        1
  •  0
  •   harkmug    12 年前

    尝试:

    ldf <- list(df1 = data.frame(row=LETTERS[1:8],col=1:8), df1 = data.frame(row=LETTERS[1:7],col=1:7))
    
    > ldf
    $df1
      row col
    1   A   1
    2   B   2
    3   C   3
    4   D   4
    5   E   5
    6   F   6
    7   G   7
    8   H   8
    
    $df1
      row col
    1   A   1
    2   B   2
    3   C   3
    4   D   4
    5   E   5
    6   F   6
    7   G   7
    
    
    > lapply(ldf, function(x) sum(LETTERS[1:8] %in% x$row)!=8)
    $df1
    [1] FALSE
    
    $df1
    [1] TRUE
    

    建造

    还可以使用: names(ldf) <- c("file1.txt", "file2.txt")

    $file1.txt
    [1] FALSE
    
    $file2.txt
    [1] TRUE
    

    更新

    更好的方法是:

    lapply(ldf, function(x) all(LETTERS[1:8] %in%  x$row) & all(1:8 %in%  x$col))
    $file1.txt
    [1] TRUE
    
    $file2.txt
    [1] FALSE