2013-10-29 52 views
4

我已經寫了一個函數,它必須創建一個rxk矩陣,並用代碼中給出的表單填充它。R要替換的項目數不是替換長度的倍數

mCreate<-function(r,k) 
{ 
result<-array(0,dim=c(r,k)) 
    for(R in 0:(r-1)) 
    { 
    for(K in 0:(k-1)) 
    { 
     result[R][K] = 5*R^K-2*K^R 
     } 
    } 
    return(result) 
} 

當我嘗試測試這個時,我總是會得到「R個項目要替換不是替換長度的倍數」。我不明白爲什麼,我在谷歌搜索,我總是得到的信息,這是因爲我已經出境。

+2

'結果[R] [K]'應該是'結果[R,K]'。免責聲明:我不確定這是否是唯一的錯誤。 –

+0

另請注意,R數組是1索引的。第一個元素位於索引1 - 不是索引0.您應該閱讀一些介紹性的R材料。 – Dason

回答

2

我會使用outer這個,而不是...

mCreate <- function(r , c){ 
    r <- seq_len(r) 
    c <- seq_len(c) 
    m <- outer(r , c , FUN = function(x,y) 5*x^y-2*y^x) 
    return(m) 
} 

mCreate(4 , 4) 
#  [,1] [,2] [,3] [,4] 
#[1,] 3 1 -1 -3 
#[2,] 8 12 22 48 
#[3,] 13 29 81 277 
#[4,] 18 48 158 768 

# Sanity check: 
mCreate(1 , 1) 
#  [,1] 
#[1,] 3 

# Safety check: 
mCreate(0 ,0) 
<0 x 0 matrix> 
+0

謝謝,這個工程。我沒有得到的是,FUN函數那些X Y參數在哪裏得到那些功能?這是R C區間嗎? – user1480139

+0

@ user1480139是這些函數的'x'和'y'參數分別從'r'和'c'得到它們的值(即它們是位置匹配的)。 –

相關問題