我是R.的新手 我有这个简单的函数,它接受2个参数并返回更大的参数。
> z
function (x,y)
{
ifelse (x>y, out<- x, out<- y)
return(out)
}
我用z(1,3),z(6,2)等组合测试了这个函数,都给出了正确的答案。 但是当我使用外部函数时,我得到了错误的结果。
> outer(x,y, FUN="z")
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 1 2 3 4 5
[3,] 1 2 3 4 5
[4,] 1 2 3 4 5
[5,] 1 2 3 4 5`
知道哪里出错了?
非常感谢。
答案 0 :(得分:10)
我猜您正在寻找Vectorize
outer(x,y, FUN=Vectorize(z))
# [,1] [,2] [,3] [,4]
#[1,] 2 3 4 5
#[2,] 2 3 4 5
#[3,] 3 3 4 5
#[4,] 4 4 4 5
我们也可以使用pmax
outer(x,y, FUN=pmax)
# [,1] [,2] [,3] [,4]
#[1,] 2 3 4 5
#[2,] 2 3 4 5
#[3,] 3 3 4 5
#[4,] 4 4 4 5
占据矩阵的相应元素将是
outer(x,y, FUN=paste)
# [,1] [,2] [,3] [,4]
#[1,] "1 2" "1 3" "1 4" "1 5"
#[2,] "2 2" "2 3" "2 4" "2 5"
#[3,] "3 2" "3 3" "3 4" "3 5"
#[4,] "4 2" "4 3" "4 4" "4 5"
x <- 1:4
y <- 2:5