Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-组合3D矩阵和单个向量,然后选择特定的月份数据_R_Multidimensional Array_Matrix_Dataframe_Combinations - Fatal编程技术网

R-组合3D矩阵和单个向量,然后选择特定的月份数据

R-组合3D矩阵和单个向量,然后选择特定的月份数据,r,multidimensional-array,matrix,dataframe,combinations,R,Multidimensional Array,Matrix,Dataframe,Combinations,我现在有一个单一的日期向量a(362行)和一个三维矩阵B(维度360*180*3620) 是否可以将A和B组合为数据帧或其他内容。它必须与B[,,362]中的每个日期和每个温度相匹配。因此,每个日期对应一个360*180的矩阵 因为我计划这样做是为了选择特定的月份数据,有没有快捷方式可以选择月份数据而不合并这两个数据集?如果我了解您想要什么, 您可以使用melt将数组转换为data.frame, 然后使用merge将其与另一条数据连接起来。 如果要在末尾添加数组,可以使用acast 将data.

我现在有一个单一的日期向量
a
(362行)和一个三维矩阵
B
(维度
360*180*3620

是否可以将
A
B
组合为数据帧或其他内容。它必须与
B
[,,362]中的每个日期和每个温度相匹配。因此,每个日期对应一个360*180的矩阵


因为我计划这样做是为了选择特定的月份数据,有没有快捷方式可以选择月份数据而不合并这两个数据集?

如果我了解您想要什么, 您可以使用
melt
将数组转换为data.frame, 然后使用
merge
将其与另一条数据连接起来。 如果要在末尾添加数组,可以使用
acast
将data.frame转换回数组

# Sample data
n <- 10
d <- array( 
  rnorm(n^3),
  dim = c(n,n,n), 
  dimnames = list(
    One   = LETTERS[1:n], 
    Two   = LETTERS[1:n], 
    Three = LETTERS[1:n]
  ) 
)
x <- data.frame( One=LETTERS[1:n], x=runif(n) )

library(reshape2)
d <- melt(d)
d <- merge( d, x, by="One", all=TRUE )
d$result <- d$value + d$x # Do something with the data
acast( d, One ~ Two ~ Three, value.var="result" )
#示例数据

很抱歉,这个方法很好,但是由于数据量很大,我一直试图运行它,程序会崩溃。有什么办法可以避免吗?
# Sample data
n <- 10
d <- array( 
  rnorm(n^3),
  dim = c(n,n,n), 
  dimnames = list(
    One   = LETTERS[1:n], 
    Two   = LETTERS[1:n], 
    Three = LETTERS[1:n]
  ) 
)
x <- data.frame( One=LETTERS[1:n], x=runif(n) )

library(reshape2)
d <- melt(d)
d <- merge( d, x, by="One", all=TRUE )
d$result <- d$value + d$x # Do something with the data
acast( d, One ~ Two ~ Three, value.var="result" )