Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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加3个二维矩阵_R_Matrix - Fatal编程技术网

用R加3个二维矩阵

用R加3个二维矩阵,r,matrix,R,Matrix,我在R中有三个二维矩阵,我想合并它们得到一个最终的数组。有没有可能在R中提供一个示例代码 具体来说,假设我有以下矩阵: Matrix 1 1; 2; 3; 4; 5; 6; 7; 8; 9; Matrix 2 A; B; C; D; E; F; G; H; I; Matrix 3 P; Q; R; S; T; U; V; W; X; 我希望看到的结果矩阵是: Matrix 4 1;A;P 2;B;Q 3;C;R 4;D;S 5;E;T

我在R中有三个二维矩阵,我想合并它们得到一个最终的数组。有没有可能在R中提供一个示例代码

具体来说,假设我有以下矩阵:

Matrix 1
1;  2;  3;
4;  5;  6;
7;  8;  9; 

Matrix 2
A;  B;   C;
D;  E;   F; 
G;  H;   I;

Matrix 3
P;  Q;  R; 
S;  T;  U;
V;  W;  X;
我希望看到的结果矩阵是:

 Matrix 4
 1;A;P 2;B;Q 3;C;R
 4;D;S 5;E;T 6;F;U
 7;G;V 8;H;W 9;I;X
请注意,矩阵的维数不是固定的,但可以保证所有矩阵的大小都相同

对于矩阵4,我想给每个元素添加一个常量。那么矩阵5就是

 Matrix 5
 X;1;A;P X;2;B;Q X;3;C;R
 X;4;D;S X;5;E;T X;6;F;U
 X;7;G;V X;8;H;W X;9;I;X
完成后,我想将矩阵转换为列表

 X;1;A;P 
 X;2;B;Q 
 X;3;C;R
 X;4;D;S 
 X;5;E;T 
 X;6;F;U
 X;7;G;V 
 X;8;H;W 
 X;9;I;X
从更大的角度来看,我尝试的是,我有3个文件,其中数据通过矩阵中的位置链接。一旦数据链接如矩阵5所示完成,位置实际上并不重要,因为数据被附加在一起。我正在努力得到可以处理的最终结果

试试看

do.call(cbind,lapply(seq_len(ncol(m1)),
      function(i) paste(m1[,i], m2[,i], m3[,i], sep=';')))
#     [,1]    [,2]    [,3]   
#[1,] "1;A;P" "2;B;Q" "3;C;R"
#[2,] "4;D;S" "5;E;T" "6;F;U"
#[3,] "7;G;V" "8;H;W" "9;I;X"

要将“mNew”中的单个元素转换为列表元素

 as.list(mNew)
数据
m1添加常量“B”并返回条目列表:

m <- matrix(1:4, 2)
l <- list("B", m, m, m)
as.list(Reduce(function(m1, m2) paste(m1, m2, sep = ";"), l))
[[1]]
[1] "B;1;1;1"

[[2]]
[1] "B;2;2;2"

[[3]]
[1] "B;3;3;3"

[[4]]
[1] "B;4;4;4"

最终矩阵是3x3还是3x9?最终矩阵是3x3。分号是数据的一部分。@Vaya编辑了邮戳,我要求您在答案中再添加一项功能。对于最后的答案,我想给矩阵中的每个元素加一个常数,即,不是1;A.P它应该是X;1.A.P,而不是2:B;Q、 它应该是X;2:B;Q另外,最后的矩阵应该转换成一个列表,也就是说,我不再担心这个职位。我更新了这个问题,因为我在评论中无法解释同样的问题。对不起,有多重roundtrips@Vaya我猜您希望将单个元素转换为列表元素。因此,只要
as.list(mNew)
就可以了。请检查更新,这是我要找的。多谢
mNew[] <-  paste("X", mNew, sep=';')
mNew
#      [,1]      [,2]      [,3]     
#[1,] "X;1;A;P" "X;2;B;Q" "X;3;C;R"
#[2,] "X;4;D;S" "X;5;E;T" "X;6;F;U"
#[3,] "X;7;G;V" "X;8;H;W" "X;9;I;X"
 split(mNew, col(mNew))
 split(mNew, row(mNew))
 as.list(mNew)
m1 <- t(matrix(1:9, ncol=3))
m2 <-t( matrix(LETTERS[1:9], ncol=3))
m3 <-t( matrix(LETTERS[16:24], ncol=3))
m <- matrix(1:4, 2)
l <- list("B", m, m, m)
as.list(Reduce(function(m1, m2) paste(m1, m2, sep = ";"), l))
[[1]]
[1] "B;1;1;1"

[[2]]
[1] "B;2;2;2"

[[3]]
[1] "B;3;3;3"

[[4]]
[1] "B;4;4;4"
Reduce(function(m1, m2) paste(m1, m2, sep = ";"), l)