R:如何使用外部

时间:2015-09-12 16:46:27

标签: r

我是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`

知道哪里出错了?

非常感谢。

1 个答案:

答案 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