从列表中提取数据框并对每个数据框执行 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)。基本上一旦提取我不需要将数据放回列表中。我找到峰值的平均值并将它们保存在一个新的数据框中。
再次感谢您的帮助。
错误消息通知必须满足两个条件之一才能 运行 函数:
x
必须是numeric
类型的向量,或者
x
内没有NA
。
因为myfiles
是一个列表,肯定不满足第一个条件。报错说明myfiles
也不满足第二个条件
也许这可以像您预期的那样工作:
lapply(myfiles,
function(x) lapply(x,
findpeaks, npeaks=6, threshold=4, nups = 2,sortstr=FALSE))
我上传到 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)。基本上一旦提取我不需要将数据放回列表中。我找到峰值的平均值并将它们保存在一个新的数据框中。
再次感谢您的帮助。
错误消息通知必须满足两个条件之一才能 运行 函数:
x
必须是numeric
类型的向量,或者x
内没有NA
。
因为myfiles
是一个列表,肯定不满足第一个条件。报错说明myfiles
也不满足第二个条件
也许这可以像您预期的那样工作:
lapply(myfiles,
function(x) lapply(x,
findpeaks, npeaks=6, threshold=4, nups = 2,sortstr=FALSE))