2017-04-26 23 views
0

做我仍然在學習R.請,我想了解這個功能:什麼sapply對於給定函數

sapply(M[,-1], function(x) x^2) 

其中M是一個矩陣。它看起來像是對M中的每個元素進行平方。有人可以提供這條線如何運作的簡要例子嗎?

謝謝

+2

它的平方的每一個元素在'M',除了第一列'-1'。這也是毫無意義的,因爲你可以用'M [, - 1]^2'來代替,而不用'sapply'。 – thelatemail

回答

1

apply系列函數中的R是根據使用情況的不同類型。

1.如果要將函數應用於矩陣的行或列,則使用apply()函數。

  • 當你想一個函數應用於又將列表中的每個元素,並得到一個列表,我們使用lapply()功能。

  • 如果您想依次將函數應用於列表中的每個元素,但您想要一個矢量而不是列表 - 我們使用sapply()函數。

  • 你的情況,上面是它的正方形的所有值,並返回一個矢量,除了矩陣的第一列,見下圖:

    M <- matrix(seq(10,25), 4, 4) # random 4 by 4 matrix 
    
        [,1] [,2] [,3] [,4] 
    [1,] 10 14 18 22 
    [2,] 11 15 19 23 
    [3,] 12 16 20 24 
    [4,] 13 17 21 25 
    
    M[,-1] 
    
        [,1] [,2] [,3] 
    [1,] 14 18 22 
    [2,] 15 19 23 
    [3,] 16 20 24 
    [4,] 17 21 25 
    
    
    sapply(M[,-1], function(x) x^2) 
    
    [1] 196 225 256 289 324 361 400 441 484 529 576 625 
    
    +0

    第三個不是100%正確的。 'sapply()'將返回一個列表**或**一個向量,具體取決於它的輸入(例如長度不均勻的列表元素)。 –

    +0

    @ Rich,好的 - 謝謝你的澄清! – Pb89

    相關問題