r - 使用 R 将聚合应用于定义的函数
问题描述
我正在使用 R 编写一个聚合函数,我需要在聚合定义函数内部调用peakdet_new
。
peakdet_new <- function(dmx, v, x = NULL)
{
....
if(nrow(data.frame(list(maxtab = maxtab)))== 1)
{
data.frame(DataMatrix=c(unique(dmx)), Status=c("OK"))
} else
{
data.frame(DataMatrix=c(unique(dmx)), Status=c("NOK"))
}
#list(maxtab = maxtab) #,mintab = mintab)
#return(maxtab)
# if(nrow(data.frame(list(maxtab = maxtab)) >= 1))
# {
# return(print("NOK"))
# } else
# {
# return(print("OK"))
# }
}
什么给了我输出:
peakdet_new(DMX_$DataMatrix, DMX_$X, DMX_$Y)
DataMatrix Status
1 00003275216311504500-A1820800306 NOK
这是我的桌子
DataMatrix X Y
00003275216311504500-A1812300356 0.23 30000
00003275216311504500-A1812300356 0.23 30483
00003275216311504500-A1829600367 0.41 30000
00003275216311504500-A1829600367 0.42 30483
问题是我不知道如何应用于peakdet_new
聚合函数,低于我所做的
data.agg <- aggregate(DMX_together[c('X', 'Y')], by = DMX_together['DataMatrix'], FUN = peakdet_new(DMX_together$DataMatrix, DMX_together$X, DMX_together$Y))
Error in match.fun(FUN) :
'peakdet_new(DMX_together$DataMatrix, DMX_together$X, DMX_together$Y)' is not a function, character or symbol
没有论据
data.agg <- aggregate(DMX_together[c('X', 'Y')], by = DMX_together['DataMatrix'], FUN = peakdet_new)
Error in FUN(X[[i]], ...) : argument "v" is missing, with no default
我期望聚合函数的输出:
DataMatrix Status
1 00003275216311504500-A1820800306 NOK
2 00003275216311504500-A1829600367 NOK
解决方案
由于您需要在整个数据帧上运行操作,请考虑通过每个不同的peakdet_new
DataMatrix调用子集。另一方面,通常期望由因子切片的单位级向量返回聚合向量(稍后与分组因子绑定以返回数据帧)。by
aggregate
调用by
将对每个子集数据帧运行操作以构建一个列表(等于子集的唯一值),然后您可以将rbind
所有元素放入一个数据帧中:
df_list <- by(DMX_, DMX_$DataMatrix, function(sub)
peakdet_new(sub$DataMatrix, sub$X, sub$Y))
final_df <- do.call(rbind, unname(df_list))
推荐阅读
- google-sheets - 如何让我的 Google 表格查询自动从年份下拉选项卡中提取?
- joomla - 在 Joomla 上获取“尝试在 null 上修改属性“shortcode_tags””
- html - 未捕获的 ReferenceError:未定义 TimelineMax
- html - 如何让 2 个文本框在 html 表单中互斥?
- python - 将文本文件的特定 int 行读取并获取到 python 上的变量中
- javascript - if 语句的 element.checked 问题
- php - WooCommerce 产品插件 - 将图像附加到产品插件字段
- javascript - 使用JS从多个img src标签中删除一个文件夹
- reactjs - 我正在使用 redux 和 firebase 进行存储,但我不知道我做错了什么
- java - 为什么 WinAPI 中的 ModuleEntry32 文本值显示为中文字符?