(r语言)为什么这个function单独输入参数的时候可以得出结果,而输入向量的时候会报错呢

请问为什么这个function单独输入参数的时候可以得出结果,而输入向量的时候会报错呢
本来是想画个图的

Y <- c(sort(rlnorm(10, meanlog = 3, sdlog = 1)))
n <- length(Y)
h <- function(x,y){
  flag <- 0
  if(x>0 && y>0){
  for (i in 2:n) {
    a <- (Y[i-1]-x)/y
    b = (Y[i]-x)/y
    flag <- flag + log(integrate(function(t) t^2 ,a,b)$value)
  }}
  return(flag)
}
h(1,1)
h(2,1)

这里h(1,1)、h(2,1)可以得到结果:

h(1,1)
[1] 53.30076
h(2,1)
[1] 50.94344

但是如果

m <- c(1,2)
h(m,1)

就会出现报错

img

我本来是想接着用下面这段代码来画图的,请问有什么解决方法吗~

x <- seq(1,5,length=10)
y <- seq(1,5,length=10)
z <- outer(x,y,h)
persp(x, y, z)

以下答案引用自GPT-3大模型,请合理使用:
library(plyr)
library(ggplot2)

ggplot(x, aes(x, y)) +
geom_point() +
geom_line() +
scale_x_continuous(expand = c(0,0)) +
scale_y_continuous(expand = c(0,0))

把报错发给我看一下

没细看公式,但是有一点运算有问题的,m <- c(1,2)你可以粗俗理解为m代表着两个数字,那h(m,1)不就是三个数字了?你写的function是只有变量x和y的,输入三个变量这个逻辑是有问题的。