請運行下面的重複性代碼:關於使用和輸出外()
require(compiler)
a <- 1:80
n <- 1:140
fn <- cmpfun(function(a, n)
{
K <- ceiling(runif(n, min = 1, max = 80))
p <- length(K[K >= min(80, a + 5)])/n
return(p)
})
這是肯定的fn()
函數返回比1
小的數,因爲事實上它應該返回來自K
的隨機數的頻率大於a + 5
;這可以通過隨機整數投入在fn()
進行驗證:
for(i in seq(8, 80, 8))
{
for(j in seq(14, 140, 14))
{
print(fn(i,j))
}
}
現在我想獲得適用於a
和n
陣列fn()
交叉功能,我想outer()
是最好的解決辦法:
陣列
X
和Y
的外積是數組A
,其維數爲c(dim(X), dim(Y))
,其中元素A[c(arrayindex.x, arrayindex.y)] = FUN(X[arrayindex.x], Y[arrayindex.y], ...)
。
我希望得到從0
輸出到1
但
persp(x = a, y = n, z = outer(X = a, Y = n, FUN = fn),
ticktype = 'detailed', phi = 30, theta = 120)
不會返回此輸出,而不是:
我在使用outer()
很想念?
但是'n'應該是我的函數中的單個數字嗎?這不是一個數組,是嗎?那麼它應該使'K'(在你的例子中是''x')的比率爲單個數字,而不是數組... –
你假設n是一個長度的向量。您使用的基本功能不會假設這一點。 – Roland