log(obs $ y)中的错误:数学函数的非数字参数

时间:2019-06-06 19:39:10

标签: r

我正在使用软件包growthrates分析增长曲线,并且遇到了从未见过的奇怪错误。当我运行函数all_easylinear()时,出现以下错误:

Error in log(obs$y) : non-numeric argument to mathematical function

但是,被称为(y)的对象是数字对象。我完全迷住了。

我尝试使用as.numeric(),但仍然遇到相同的错误。

示例:

#example data
odcor_gr <- tibble(
  timeminutes =c(307.428333333333, 327.923333333333, 
348.42, 368.915, 389.411666666667, 409.906666666667, 430.401666666667, 
430.401666666667, 450.896666666667, 471.391666666667, 491.886666666667, 
512.383333333333, 532.878333333333, 553.373333333333, 573.868333333333, 
594.363333333333, 614.858333333333, 635.353333333333, 655.848333333333, 
676.345, 696.84, 717.335), 
  repcor = c(0.31164751485, 0.3728024892, 
0.436049997975, 0.5087474973, 0.58819499865, 0.671152520925, 
0.7614674946, 0.330884997975, 0.361395007425, 0.391364991225, 
0.4193099919, 0.45683998785, 0.484987502025, 0.518939988525, 
0.552150007425, 0.583132508775, 0.614655039825, 0.64367999325, 
0.67689000135, 0.7099650243, 0.75127499865, 0.7855649703), 
  label = c("Y7092_exp1_0", 
"Y7092_exp1_0", "Y7092_exp1_0", "Y7092_exp1_0", "Y7092_exp1_0", 
"Y7092_exp1_0", "Y7092_exp1_0", "Y7092_exp1_313.22", "Y7092_exp1_313.22", 
"Y7092_exp1_313.22", "Y7092_exp1_313.22", "Y7092_exp1_313.22", 
"Y7092_exp1_313.22", "Y7092_exp1_313.22", "Y7092_exp1_313.22", 
"Y7092_exp1_313.22", "Y7092_exp1_313.22", "Y7092_exp1_313.22", 
"Y7092_exp1_313.22", "Y7092_exp1_313.22", "Y7092_exp1_313.22", 
"Y7092_exp1_313.22"))

fit <- all_easylinear(data=odcor_gr, 
                      grouping="label",
                      time="timeminutes", y="repcor")

这会产生以下错误:

Error in log(obs$y) : non-numeric argument to mathematical function

谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

问题在于该函数无法理解小标题。你可以做

fit <- all_easylinear(data=as.data.frame(odcor_gr), 
                      grouping="label",
                      time="timeminutes", y="repcor")

具体来说,该函数尝试使用诸如odcor_gr[, "timeminutes"]这样的代码提取列中的数据,对于data.frames,该列将返回一个数字矢量,但是对于小标题,它将返回另一个小标题,而不是数字矢量。