如何使用lapply和我自己的函数解决此错误?

时间:2016-09-21 20:59:39

标签: r transform lapply

我有一个包含18个数据框的列表,我使用read.xlsx读取。每个数据框具有相同的列数,但某些列包含某些行的NA。 此外,在Abundance列中有行包含非数字数据,我怀疑我可能需要从每个数据框中删除这些行,但我无法找到删除这些行的方法。

我的数据框架结构如下:

$ :'data.frame':    118 obs. of  10 variables:
  ..$ Locus                   : Factor w/ 24 levels "A","CS",..: 14 14 14 14 22 22 NA 22 10 10 ...
  ..$ Target                  : Factor w/ 96 levels "[AAAGA]14","[AAAGA]15",..: 88 91 90 87 11 12 NA 9 65 67 ...
  ..$ Length                  : num [1:118] 60 76 72 56 24 39 NA 20 139 141 ...
  ..$ Abundance               : num [1:118] 1479 1108 180 144 1786 ...
  ..$ Size             : num [1:118] 15 19 18 14 6 9.3 NA 5 32 32.2 ...
  ..$ Call                    : Factor w/ 4 levels "Al","HAs",..: 1 1 3 3 1 1 NA 3 1 1 ...
  ..$ RAR                     : num [1:118] NA 74.92 12.17 9.74 NA ...
  ..$ Position        : num [1:118] NA NA NA NA NA NA NA NA NA NA ...
  ..$ Al.1.s.percent: num [1:118] NA NA 12.17 9.74 NA ...
  ..$ Al.2.s.percent: num [1:118] NA NA 16.2 13 NA ...

我想将此函数应用于我的数据框列表中的每个数据框。

add.sum = function(df){
    transform(df, Tot.count = ave(df[[Abundunce]], df[[Locus]], FUN = sum))
}

我尝试使用lapply

这一行
transformed.data = lapply(mydata, add.sum)

我也是这样试过的

transformed.data = lapply(mydata, function (x) add.sum(x))

但这些给我以下错误

Error in .subset2(x, i, exact = exact) : no such index at level 1

有关如何使其正常工作的任何建议吗?

0 个答案:

没有答案