二进制运算符错误的非数字参数

时间:2019-04-04 13:49:58

标签: r ggplot2 rstudio

我收到错误消息“ stat_function()中的计算失败: 当我尝试绘制此函数时,为二进制运算符的非数字参数。当我删除两个exp时,我反而收到错误“在stat_function()中计算失败:找不到函数“ y2 <-”'我在做什么错了?

我尝试了在线显示的ggplot函数的不同配置,但是收到“映射必须在aes()或aes_()中”,因为我是R的新手,我不知道要尝试多少其他东西。

Library(tidyverse)

calculate_blood_amount <- function(t, parms){

c_0 <- parms[1]
k_a <- parms[2]
k_c <- parms[3]

y2(t) <- ((k_a * c_0)/(k_c - k_a)) * exp^(-k_a * t) + ((-k_a * c_0)/(k_c - 
k_a)) * exp^(-k_c * t)

return(y2(t))

}

Time1 = data.frame(t = c(0, 24))

parms1 = c(500, 0.168, 1.436)

ggplot(data = Time1, aes(x = t)) +
stat_function(fun = calculate_blood_amount,
            args = list(parms = parms1)) +
 theme_bw()

当t为0和24时,这应该提供y2(t)的图

1 个答案:

答案 0 :(得分:0)

我认为您的代码中只有几个语法错误。参见下面的工作版本。

exp ^(xyz)更改为exp(xyz),y2(t)变量名称更改为y2_t。

library(tidyverse)

calculate_blood_amount <- function(t, parms){

  c_0 <- parms[1]
  k_a <- parms[2]
  k_c <- parms[3]

  y2_t <- ((k_a * c_0)/(k_c - k_a)) * exp(-k_a * t) + ((-k_a * c_0)/(k_c - k_a)) * exp(-k_c * t)

  return(y2_t)

}

Time1 = data.frame(t = c(0, 24))

parms1 = c(500, 0.168, 1.436)

ggplot(data = Time1, aes(x = t)) +
  stat_function(fun = calculate_blood_amount,
                args = list(parms = parms1)) +
  theme_bw()