如何在转换为as.data.frame的数组内移动?

时间:2018-10-07 09:55:22

标签: arrays r dataframe

我编写了以下代码以将数组声明为数据帧:

b=as.data.frame(array(0,dim=c(NF,29,1,T+1),
dimnames=list(NULL,c(…..varnames))))

现在,我无法在数组内部移动。例如,如果需要在以下数组位置[,,1,1]中显示所有矩阵,我需要写什么? 我尝试过以下代码:

b$[].1.1
b$,1.1
b[,,1,1]"

但是,它当然不起作用。 非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

来自?as.data.frame

  

可以将数组转换为数据帧。一维数组是   像向量一样对待二维矩阵,像矩阵一样对待二维数组。数组   二维以上的元素将通过以下方式转换为矩阵   在第一个尺寸之后“展平”所有尺寸并创建合适的尺寸   列标签。

array1 <- array(1:8,dim = c(2,2,2),dimnames = split(paste0(rep(letters[1:2],each=3),1:3),1:3))
# , , 3 = a3
# 
#     2
# 1    a2 b2
#   a1  1  3
#   b1  2  4
# 
# , , 3 = b3
# 
#     2
# 1    a2 b2
#   a1  5  7
#   b1  6  8
# 

df1    <- as.data.frame(array1)
#    a2.a3 b2.a3 a2.b3 b2.b3
# a1     1     3     5     7
# b1     2     4     6     8

df1$b2.a3
# [1] 3 4

答案 1 :(得分:0)

我需要从一个尺寸为(2,3,1,3)的数组开始创建一个数据框:

0   0   0   0   0   0   0   0   0  
0   0   0   0   0   0   0   0   0

因此,我需要的输出是:

debt loan stock debt loan stock debt loan stock
  0    0    0    0    0     0     0    0    0
  0    0    0    0    0     0     0    0    0

下一个代码正确吗?

b=array(0, dim=c(3,3,1,4), dimnames=list(NULL,c("debt","loan","stock")))
output=as.data.frame(b)