如何获得2列,8行矩阵而不是返回2行,8列矩阵使用sapply?

时间:2015-04-23 18:26:53

标签: r matrix sapply

我想使用sapply创建一个2列矩阵,8行。第一列是1到8,第二列是第一列的平方。我做了sapply(1:8, function(x), c(x,x^2))所以我有8列和2行而不是2列和8行。如何按行替换列?

2 个答案:

答案 0 :(得分:5)

尝试使用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)

答案 1 :(得分:4)

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)))