аргумент 4 соответствует нескольким формальным аргументам — трехмерный поверхностный график с plot3D

Я не могу заставить функцию scatter3D() работать в R. Я хотел бы построить поверхность, но не могу запустить код, хотя для некоторых, которые я нашел в Интернете, это очень просто. Я пытался читать документацию по коду CRAN, но ничего не могу сделать. Я хочу, чтобы мой код работал.

По сути, есть проблема с какой-то переменной, которую я ввожу, но не вижу, где. Я думаю, что это может быть скрыто внутри функции, и сообщение об ошибке на самом деле не для меня.

Любая помощь будет оценена по достоинству.

Код:

library("plot3D")

w <- 1:100
sigma <- 5
x <- w + rnorm(w, w, 2*sigma)
y <- w + rnorm(w, w, sigma)
z<- w + rnorm(w, w, 3*sigma)

a <- c()
for (i in 1:10){
  a <- c(a, rep(10*i, times = 10))
}
b <- rep(seq(10, 100, 10), times = 10)
ratio = 0.4
d = ratio*a + (1 - ratio)*b + rnorm(100, 0, 10)

fit <- lm(d ~ a + b)
grid.lines = 26
a.pred <- seq(min(a), max(a), length.out = grid.lines)
b.pred <- seq(min(b), max(b), length.out = grid.lines)
ab <- expand.grid(a = a.pred, b = b.pred)
d.pred <- matrix(predict(fit, newdata = ab), 
                 nrow = grid.lines, ncol = grid.lines)
fitpoints <- predict(fit)
scatter plot with regression plane
scatter3D(a,b,d, pch = 18, cex = 2, 
          theta = 20, phi = 20,
          surf = list(a=a.pred, b=b.pred, d=d.pred,  
                      facets = F, fit = fitpoints))

Сообщение об ошибке:

Ошибка в addimg(poly = NULL, plist = plist, a = c(10, 13.6, 17.2, 20.8, : аргумент 4 соответствует нескольким формальным аргументам)


person stuart stevenson    schedule 23.11.2018    source источник


Ответы (1)


Я думаю, вам нужно вызвать оси x, y и z:

# scatter plot with regression plane
scatter3D(a,b,d, pch = 18, cex = 2, 
          theta = 20, phi = 20,
          surf = list(x=a.pred, y=b.pred, z=d.pred,
                      facets = F, fit = fitpoints))

Это сработало в моем случае.

Комментарий по поводу исправления ошибок:

  • Запустите свой код построчно (RStudio Ctrl + Enter). Затем вы понимаете, что проблема в вашем scatter3D.
  • Удаляйте аргументы, пока команда не сработает. В вашем случае это предполагает, что проблема была в surf = list(...).
person Christoph    schedule 23.11.2018
comment
Спасибо, Кристоф. Это было неясно в примере, который я нашел. - person stuart stevenson; 23.11.2018