【问题标题】:Creating data frames from list of elements without element names [duplicate]从没有元素名称的元素列表创建数据框[重复]
【发布时间】:2016-02-05 11:11:35
【问题描述】:

我想从矩阵的数据元素列表中创建一个单独的数据框。例如,我有以下矩阵元素列表:-

> A[[1]]
$`up`
,, T+1
     [,1] [,2] [,3]
[1,]    2    4    3
[2,]    1    5    7

$`down`
,, T+1
     [,1] [,2] [,3]
[1,]    3    2    1
[2,]    2    4    2

$`right`
,,T+1
     [,1] [,2] [,3]
[1,]    5    6    7
[2,]    9    2    3

假设我想创建一个单独的数据元素列表。我不希望元素名称 '$'up'/$'down'/$'right' 出现在我的输出中。用现在的代码,每次想调用第一个矩阵,都得把代码写成

A[[1]]$'up'[,,1] or A[[1]]$'down'[,,1] or A[[1]]$'right'[,,1]

是否可以创建一个单独的列表,以便每当我想调用它时,没有元素名称会更简单。例如,我只想调用 A[[1]],每当我想调用第一个矩阵时,A[[2]] 就调用第二个矩阵,依此类推。它看起来像这样:-

> A[[1]]
     [,1] [,2] [,3]
[1,]    2    4    3
[2,]    1    5    7

> A[[2]]
     [,1] [,2] [,3]
[1,]    3    2    1
[2,]    2    4    2

> A[[3]]
     [,1] [,2] [,3]
[1,]    5    6    7
[2,]    9    2    3

【问题讨论】:

  • 你真的需要学习help("Extract")

标签: r list matrix


【解决方案1】:

根据您对A 的定义,您已经可以通过A[[i]] 访问第i 个矩阵,例如:

> A[[1]]
     [,1] [,2] [,3]
[1,]    2    4    3
[2,]    1    5    7

或者,您可以创建一个 3 维数组,其中第三维表示矩阵的数量:

B <- array(do.call("cbind", A), c(2,3,4))

现在您可以通过B[,,i] 访问第 i 个矩阵(“立方体”的第 i 个 z 切片),例如:

> B[,,2]
     [,1] [,2] [,3]
[1,]    3    2    1
[2,]    2    4    2

【讨论】:

  • 我现在已经纠正了这个问题。再次抱歉。谢谢!
  • 我现在已经解决了这个问题。谢谢帕特里克!我使用了您的第二个命令--> B array(do.call("cbind", A))
猜你喜欢
  • 1970-01-01
  • 2018-09-29
  • 2022-11-13
  • 1970-01-01
  • 1970-01-01
  • 2018-06-23
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多