首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在向数据帧应用带有生物算法包的循环之前提取已处理的emg值?

如何在向数据帧应用带有生物算法包的循环之前提取已处理的emg值?
EN

Stack Overflow用户
提问于 2022-06-16 12:11:04
回答 1查看 52关注 0票数 0

我正在分析来自82个主题的emg信号数据集,每一列都是一个主题,行是emg值,我遵循了另一个问题的第二个答案解决方案:How can I apply a piece of R code to every column of my data frame并运行ok,下面是一个示例:

代码语言:javascript
运行
复制
library(biosignalEMG)
data(emg96627009)
colnames(emg96627009) <- c("subject1", "subject2", "subject3", "subject4")
for(i in names(emg96627009)){
    x <- as.emg(emg96627009[i], samplingrate = 1000, units = "mV")
    x <- rectification(x)
    x <- lowpass(x, cutoff = 200)
    x <- movingaverage(x, wsize = 100, units = "samples")
    plot(x)
}

我希望返回一个数据帧,其中包含来自每个主题的处理后的emg信号,类似于原始文件的结构(列、主题和行emg值),因为我想分析它们;我如何做;我尝试添加到循环中。

代码语言:javascript
运行
复制
...
return(x)
}

代码语言:javascript
运行
复制
...
return(x$values)
}

但是它们不起作用,只从subject1对象返回x$值

另一个问题是,我有一个数据框架列表,数据来自具有上述结构的多块肌肉,我如何调整这个循环来处理数据帧列表?

EN

回答 1

Stack Overflow用户

发布于 2022-06-16 16:11:22

要回答您的第一个问题:您可以编写一个函数,并将其应用于数据的每一列,然后将结果合并成一个数据,如下所示

代码语言:javascript
运行
复制
emg96627009_processed <- lapply(colnames(emg96627009), function(subject) {
  x <- as.emg(emg96627009[subject], samplingrate = 1000, units = "mV")
  x <- rectification(x)
  x <- lowpass(x, cutoff = 200)
  x <- movingaverage(x, wsize = 100, units = "samples")
  x$values
})

emg96627009_processed <- as.data.frame(do.call(cbind, emg96627009_processed))
colnames(emg96627009_processed) <- colnames(emg96627009)

如果您有多个数据文件,那么最好事先将它们组合起来,然后重复这个过程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72645632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档