2
我想用sapply
創建2列矩陣,8行。第一列是從1到8,第二列是第一列的平方。我做了sapply(1:8, function(x), c(x,x^2))
,所以我得到了8列和2行,而不是獲得2列和8行。我怎樣才能按行替換列?如何獲得2列,8行矩陣而不是返回2行,8列矩陣使用sapply?
我想用sapply
創建2列矩陣,8行。第一列是從1到8,第二列是第一列的平方。我做了sapply(1:8, function(x), c(x,x^2))
,所以我得到了8列和2行,而不是獲得2列和8行。我怎樣才能按行替換列?如何獲得2列,8行矩陣而不是返回2行,8列矩陣使用sapply?
sapply
的默認值基本上是cbind
的最終輸出。你可以告訴它不要簡化或只是轉置你的結果。
# manual rbind
do.call("rbind", sapply(1:8, function(x) c(x,x^2), simplify=FALSE))
# transpose result
t(sapply(1:8, function(x) c(x,x^2)))
使用t
> t(sapply(1:8, function(x) c(x,x^2)))
[,1] [,2]
[1,] 1 1
[2,] 2 4
[3,] 3 9
[4,] 4 16
[5,] 5 25
[6,] 6 36
[7,] 7 49
[8,] 8 64
其實沒有必要使用sapply
對於那些嘗試,只要使用matrix
> x <- 1:8
> matrix(c(x,x^2), ncol=2)
太謝謝你了 – Nour