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



我上传了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) )

我得到以下错误:

findpeaks(y, npeaks = 6, threshold = 4, nups = 2, sortstr = FALSE):是多少。vector(x, mode = "numeric") || length(is.na(x)) == 0不为TRUE

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

再次感谢您的帮助。

错误信息告知必须满足以下两个条件之一才能运行函数:

  1. x必须是numeric类型的矢量,否则
  2. x中没有NA

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

也许这可以像你期望的那样工作:

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

最新更新