R-使用自定义函数的输入引用数据帧列
假设我有一个名为MYKVS的数据帧R-使用自定义函数的输入引用数据帧列,r,function,dataframe,aggregate,R,Function,Dataframe,Aggregate,假设我有一个名为MYKVS的数据帧 Subject HourNominal Concentration Cohort FS EF VTI deltaFS deltaEF deltaVTI 005-010 0.00 NA 1 30.87 65.48 21.59 0% 0% 0% 005-010 0.25 31.00 1 31.82 64.86 0.00
Subject HourNominal Concentration Cohort FS EF VTI deltaFS deltaEF deltaVTI
005-010 0.00 NA 1 30.87 65.48 21.59 0% 0% 0%
005-010 0.25 31.00 1 31.82 64.86 0.00 3% -1% -100%
005-010 1.00 9.69 1 26.13 69.11 0.00 -15% 6% -100%
005-010 3.00 3.26 1 29.89 60.99 23.49 -3% -7% 9%
005-010 24.00 1.52 1 29.67 57.18 22.17 -4% -13% 3%
005-010 48.00 1.23 1 35.41 56.70 20.85 15% -13% -3%
我有一个函数,通过HourNominal聚合这个数据帧,并找到所有浓度值的平均值
organizeR = function(x) {
g1 = aggregate(MYKVS$x, by=list(MYKVS$HourNominal), FUN=mean)
g1 = setNames(g1, c('HourNominal', 'Function'))
return(g1)
}
CR1 = organizeR(FS)
为什么CR1会返回
Error in aggregate.data.frame(as.data.frame(x), ...) :
no rows to aggregate
如果输入x,为什么不能使用x输入来引用自定义函数中的dataframe列?这是R的一个奇怪部分吗
解决方案:
谢谢大家的提示。如前所述,函数应该如下所示
organizeR = function(x) {
g1 = aggregate(MYKVS[,x], by=list(MYKVS$HourNominal), FUN=mean)
g1 = setNames(g1, c('HourNominal', 'Function'))
return(g1)
}
CR1 = organizeR('FS')
因为R函数不识别对象,除非直接指向对象名 可能会切换到
MYKVS[[x]]
并将FS
作为“FS”
传递。在函数中,您必须将MYKVS$x合计引用到函数的实际名称。这可能有效MYKVS[,x]
。另外,您必须更改函数调用,使列名在引号中CR1=organizeR(“FS”)
R不理解FS(因为它是数据帧中的列名),而不知道数据帧抱歉,我上面的评论实际上应该是“将MYKVS$x聚合为列的实际名称”,可能会切换到MYKVS[[x] ]
并将FS
作为“FS”
传递。在函数中,您必须将MYKVS$x聚合引用到函数的实际名称。这可能会起作用MYKVS[,x]
。此外,您必须更改函数调用,将列名置于引号中CR1=organizeR(“FS”)
R不理解FS(因为它是数据框中的一个列名)不知道数据框对不起,我上面的评论实际上应该是“将MYKVS$x聚合到列的实际名称”