我正在尝试在r
中进行一些3d平面图绘制,当我尝试使用outer
函数时会出现奇怪的行为。 outer
采用了用户定义的函数,该函数在给定任何(x,y)对的情况下产生z轴值。我该如何写一个函数
例如,此代码
x <- c(4,5,6)
my_f <- function(first, second){
x[1] <- first
sum(x) + second
}
a <- b <- c(1,2,3)
c <- outer(a,b, my_f)
row.names(c) <- b
colnames(c) <- a
产生
1 2 3
1 13 14 15
2 13 14 15
3 13 14 15
当我期望
[,1] [,2] [,3]
[1,] 13 14 15
[2,] 14 15 16
[3,] 15 16 17
至少它会提示我,并给我一条警告消息:
Warning message:
In x[1] <- first :
number of items to replace is not a multiple of replacement length
答案 0 :(得分:0)
效果很好:
x <- c(4,5,6)
my_f <- function(first, second){
x[1] <- first
sum(x) + second
}
a <- b <- c(1,2,3)
args <- expand.grid(a,b)
z <- mapply(my_f, args[,1], args[,2])
dim(z) <- c(length(a), length(b))