R 函数在ggplot中绘制多条线

R 函数在ggplot中绘制多条线,r,function,ggplot2,R,Function,Ggplot2,我正在尝试创建一个函数,该函数将x值和向量的序列用于一个方程中。对于向量dM中的每个值,我想计算每个x值发生的概率(循环函数中的等式)。将所有概率与相关的dM值(两列)放在一个data.frame中,然后使用ggplot映射线以显示每个关系 例如:pred_prob(0870,50,c(-100,0))这意味着从0到870乘以50,计算向量中每个值的概率。这是我的工作代码。我怀疑嵌套for循环没有按预期工作,或者存储数据的方式不正确 pred_probs <- function(from,

我正在尝试创建一个函数,该函数将x值和向量的序列用于一个方程中。对于向量
dM
中的每个值,我想计算每个x值发生的概率(循环函数中的等式)。将所有概率与相关的
dM
值(两列)放在一个data.frame中,然后使用ggplot映射线以显示每个关系

例如:
pred_prob(0870,50,c(-100,0))
这意味着从0到870乘以50,计算向量中每个值的概率。这是我的工作代码。我怀疑嵌套for循环没有按预期工作,或者存储数据的方式不正确

pred_probs <- function(from,to,by,dM){
  pred_females = numeric(0)
  dM <- as.vector(dM)
  x_values <- seq(from = from, to = to, by = by)

  for( j in dM){
   for(i in x_values){
     prob=exp(-2.048e-02*i + 2.087e-02*j + -2.216e-05*i*j)/(1 + exp(-2.048e-02*i + 2.087e-02*j + -2.216e-05*i*j)) 
     pred_females = c(pred_females,prob,j)
   }
  pred_females <- as.data.frame(pred_females)
  ggplot(pred_females) + 
    geom_line(mapping = aes(x = x_values, y = pred_females, 
                            group = j, 
                            color = j))
  }
}
pred_prob(0,870,50,c(-100,0))

pred_probs我不完全清楚您想做什么,因为您的代码存在一些问题,但我非常有信心,您可以随心所欲,而不需要任何循环或函数

这接近你想要的吗

library(tidyverse)

tibble() %>% 
  expand(i=c(-200, -100, 0, 100), j=seq(0, 2000, 50)) %>% 
  mutate(prob=exp(-2.048e-02*i + 2.087e-02*j + -2.216e-05*i*j)/(1 + exp(-2.048e-02*i + 2.087e-02*j + -2.216e-05*i*j))) %>% 
  ggplot() +
    geom_line(aes(x = i, y = prob, color = as.factor(j)))

是的,这正是我所需要的,除了切换expand.grid中的字母I和j,以绘制向量中不同值的线,而不是序列。我在做一个函数,因为它需要改变序列的值和向量的值。我把你的代码编辑成一个函数。我在问题中发布了最后一个有效的函数。谢谢你的帮助!
library(tidyverse)

tibble() %>% 
  expand(i=c(-200, -100, 0, 100), j=seq(0, 2000, 50)) %>% 
  mutate(prob=exp(-2.048e-02*i + 2.087e-02*j + -2.216e-05*i*j)/(1 + exp(-2.048e-02*i + 2.087e-02*j + -2.216e-05*i*j))) %>% 
  ggplot() +
    geom_line(aes(x = i, y = prob, color = as.factor(j)))