所以我想通過在R.矩陣這個作品真的直觀一些簡單的功能應用功能:R:應用功能在矩陣和保持矩陣尺寸
> (function(x)x*x)(matrix(1:10, nrow=2))
[,1] [,2] [,3] [,4] [,5]
[1,] 1 9 25 49 81
[2,] 4 16 36 64 100
...但顯然我不瞭解其所有運作:
> m = (matrix(1:10, nrow=2))
> (function(x) if (x %% 3 == 0) { return(NA) } else { return(x+1) })(m)
[,1] [,2] [,3] [,4] [,5]
[1,] 2 4 6 8 10
[2,] 3 5 7 9 11
Warning message:
In if (x == 3) { :
the condition has length > 1 and only the first element will be used
我這個念起來發現了矢量化和sapply,這似乎都很大,只是喜歡我想要的東西,除了他們兩個我的矩陣轉換成一個列表:
> y = (function(x) if (x %% 3 == 0) { return(NA) } else { return(x+1) })
> sapply(m, y)
[1] 2 3 NA 5 6 NA 8 9 NA 11
> Vectorize(y)(m)
[1] 2 3 NA 5 6 NA 8 9 NA 11
...但我想保留它的當前尺寸矩陣。我該怎麼做?謝謝!
還檢查了這個有用的帖子在不同版本適用的:http://nsaunders.wordpress.com/2010/08/20/a-brief-introduction-to-apply-in-r/ – patrickmdnet 2011-12-20 17:36:15