你得到结果(2行×3列)是什么是要自R意料之中的,因为它相当于cbind
向量(id
,具有回收利用)和一个矩阵(m
)。
IMO,这将是更好地使用list
或array
(当尺寸相一致,不允许数字和因素值的组合),如果你真的要绑定不同的数据结构。否则,只需将cbind
矩阵转换为现有的data.frame(如果两者具有相同的行数)将执行该作业。例如
x1 <- replicate(2, rnorm(10))
x2 <- replicate(2, rnorm(10))
x12l <- list(x1=x1, x2=x2)
x12a <- array(rbind(x1, x2), dim=c(10,2,2))
,结果读
> str(x12l)
List of 2
$ x1: num [1:10, 1:2] -0.326 0.552 -0.675 0.214 0.311 ...
$ x2: num [1:10, 1:2] -0.164 0.709 -0.268 -1.464 0.744 ...
> str(x12a)
num [1:10, 1:2, 1:2] -0.326 0.552 -0.675 0.214 0.311 ...
列表是更容易,如果你打算使用不同尺寸的矩阵使用,并提供他们以同样的方式组织(对于行)作为外部数据框架,您可以轻松地将它们分组。这里有一个例子:
df1 <- data.frame(grp=gl(2, 5, labels=LETTERS[1:2]),
age=sample(seq(25,35), 10, rep=T))
with(df1, tapply(x12l$x1[,1], list(grp, age), mean))
您还可以使用lapply
(用于列表)和apply
(数组)的功能。
来源
2011-05-26 19:16:09
chl
尽管我的回答,我有些同情与其他受访者:你为什么要这么做?也许我们可以帮助你找到一个更好的R语言... – 2011-05-26 22:20:06
我有输入和输出为矩阵的数据。我希望每个经验都是一排数据框。 – Scharron 2011-05-27 10:13:41
最近在tidyverse系列的软件包中,尤其是purrr的发展,使得为函数式编程创建任意数据类型的嵌套列很有用。矩阵的嵌套列可用作将每个矩阵转换为更简单的结构的准备步骤。 – 2017-04-13 20:23:14