从列表中提取数据框并对每个数据框执行 findpeaks 函数

Extract data frame from list and perform findpeaks function on each data frame

我上传到 R 多个 csv 文件,其中有 16 列,有 100 个数据值,我学到的一些 NA 需要变成 0 才能使 findpeaks 工作。对于列表中的每个数据框,我想找到每个单独列的峰值。我能够 运行 单个数据框上的代码,所以我知道输入的数据没有问题(下面的代码用于从列表中提取的单个数据框)。

peak_info <- lapply(myfiles$dt1, findpeaks, npeaks=6, threshold=4, nups = 2, sortstr=FALSE) 

但是当我尝试使用以下代码查找保存在列表中的所有数据帧的峰值时:

peaks <- lapply(myfiles, function(x)  findpeaks(x, npeaks=6, threshold=4, nups = 2, sortstr=FALSE) )

我收到以下错误。

Error in findpeaks(y, npeaks = 6, threshold = 4, nups = 2, sortstr = FALSE) : is.vector(x, mode = "numeric") || length(is.na(x)) == 0 is not TRUE

我还想使用一些函数,所以我选择了 function(x)。基本上一旦提取我不需要将数据放回列表中。我找到峰值的平均值并将它们保存在一个新的数据框中。

再次感谢您的帮助。

错误消息通知必须满足两个条件之一才能 运行 函数:

  1. x必须是numeric类型的向量,或者
  2. x内没有NA

因为myfiles是一个列表,肯定不满足第一个条件。报错说明myfiles也不满足第二个条件

也许这可以像您预期的那样工作:

lapply(myfiles, 
       function(x) lapply(x, 
                   findpeaks, npeaks=6, threshold=4, nups = 2,sortstr=FALSE))