Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在ggplot2中绘制具有求和的函数?_R_Function_Ggplot2 - Fatal编程技术网

R 如何在ggplot2中绘制具有求和的函数?

R 如何在ggplot2中绘制具有求和的函数?,r,function,ggplot2,R,Function,Ggplot2,假设我有一个向量x=1:5。假设我想画出公式 在这个例子中注意,k接受[0,5]中的所有值,而不仅仅是整数。 我将如何在ggplot2中执行此操作 以下是我的尝试: library(ggplot2) y <- c(1, 2, 3, 4, 5) f <- function(k, vector){ sum((vector-k)^2/5) } ggplot(data=data.frame(x=c(0, 5)), aes(x)) + stat_function(fun=f, geom='l

假设我有一个向量
x=1:5
。假设我想画出公式

在这个例子中注意,
k
接受[0,5]中的所有值,而不仅仅是整数。

我将如何在
ggplot2
中执行此操作

以下是我的尝试:

library(ggplot2)
y <- c(1, 2, 3, 4, 5)
f <- function(k, vector){
sum((vector-k)^2/5)
}
ggplot(data=data.frame(x=c(0, 5)), aes(x)) +
stat_function(fun=f, geom='line', args(list(vector=y)))

Error in (function (k, vector)  : 
  argument "vector" is missing, with no default
Error in exists(name, envir = env, mode = mode) : 
  argument "env" is missing, with no default
库(ggplot2)

有两件事。首先,需要为要绘制的变量对函数进行适当的矢量化<代码>求和
将折叠结果。最简单的修复方法是使用

f <- Vectorize(function(k, vector){
    sum((vector-k)^2/5)
}, "k")
这会给你

ggplot(data=data.frame(x=c(0, 5)), aes(x)) +
    stat_function(fun=f, geom='line', args=list(vector=y))