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

时间:2014-02-13 21:33:17

标签: r missing-data

我有一个.txt文件夹。每个.txt文件中的一列称为“行”。 (这很令人困惑,我很抱歉。)“行”列包含值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 个答案:

答案 0 :(得分:0)

尝试:

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