Error in substitute(FUN, env = parent.frame())[-1] :类别为‘symbol‘的对象不可以取子集 出错纠正

Error in substitute(FUN, env = parent.frame())[-1] :类别为’symbol’的对象不可以取子集

summaryBy()函数 mtcars举例

在近期的R语言学习中。在运用summaryBy()函数做多统计量描述统计时,一直被持续警告一个错误,Error in substitute(FUN, env = parent.frame())[-1] :类别为’symbol’的对象不可以取子集。
由于是R语言小白,多方面搜查也无果,后搜寻 env=parent.frame()的意思。勉强猜测是函数问题。
后来经过验证,确实是mean函数出现错误。
写下纠正错误的经过,加深对R语言的理解。

>mycars<-mtcars[c("mpg","hp","wt","am")]
>library(doBy)
>summaryBy(mpg+hp+wt~am,data=mycars,FUN=mean)
Error in substitute(FUN, env = parent.frame())[-1] : 
  类别为'symbol'的对象不可以取子集

在这里插入图片描述
后来我经过多方查询,试验,发现可能是 mean 函数在之前的学习中给它赋值了,导致在取用函数时R首先认定它是变量名称而非函数。
试验过程↓

>summaryBy(mpg+hp+wt~am,data=mycars,FUN=sum)
  am mpg.sum hp.sum wt.sum
1  0   325.8   3045 71.609
2  1   317.1   1649 31.343

在这里插入图片描述

接着试着敲了敲 mean 看看反应如何

>mean
         N.Amer   Europe     Asia   S.Amer Oceania Africa  Mid.Amer
1951 45939.00 21574.00 2876.000 1815.000    1646     89  555.0000
1956 60423.00 29990.00 4708.000 2568.000    2366   1411  733.0000
1957 64721.00 32510.00 5230.000 2695.000    2526   1546  773.0000
1958 68484.00 35218.00 6662.000 2845.000    2691   1663  836.0000
1959 71799.00 37598.00 6856.000 3000.000    2868   1769  911.0000
1960 76036.00 40341.00 8220.000 3145.000    3054   1905 1008.0000
1961 79831.00 43173.00 9053.000 3338.000    3224   2005 1076.0000
mean 66747.57 34343.43 6229.286 2772.286    2625   1484  841.7143

Error in substitute(FUN, env = parent.frame())[-1] :类别为‘symbol‘的对象不可以取子集 出错纠正_第1张图片
发现确实是之前的我学习时把mean给赋值了。(并且在退出时选择了保存)
于是从base包中调用mean函数。最终解决该问题。

>base::mean
function (x, ...) 
UseMethod("mean")


 >summaryBy(mpg+hp+wt~am,data = mtcars,FUN = base::mean)
  am mpg.base::mean hp.base::mean wt.base::mean
1  0       17.14737      160.2632      3.768895
2  1       24.39231      126.8462      2.411000

Error in substitute(FUN, env = parent.frame())[-1] :类别为‘symbol‘的对象不可以取子集 出错纠正_第2张图片

你可能感兴趣的:(r语言)