R-使用自定义函数的输入引用数据帧列

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

假设我有一个名为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      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聚合到列的实际名称”