如何使用for循环将一个矩阵的特定列分配给另一个矩阵,并在r中形成一个新矩阵?

时间:2019-04-21 12:48:28

标签: r matlab

好的,这就是我在Matlab中从矩阵A形成矩阵A1的过程

 x=1:10;

 x=x';
 A=toeplitz(x,[x(1);flip(x(2:end))]);

 A1=zeros(10,5);
 count=0;

 for i=1:2:10
 count=count+1;
 A1(:,count)=A(:,i);
 end

输出如下所示

 >> A

 A =

 1    10     9     8     7     6     5     4     3     2
 2     1    10     9     8     7     6     5     4     3
 3     2     1    10     9     8     7     6     5     4
 4     3     2     1    10     9     8     7     6     5
 5     4     3     2     1    10     9     8     7     6
 6     5     4     3     2     1    10     9     8     7
 7     6     5     4     3     2     1    10     9     8
 8     7     6     5     4     3     2     1    10     9
 9     8     7     6     5     4     3     2     1    10
10     9     8     7     6     5     4     3     2     1

>> A1

A1 =

 1     9     7     5     3
 2    10     8     6     4
 3     1     9     7     5
 4     2    10     8     6
 5     3     1     9     7
 6     4     2    10     8
 7     5     3     1     9
 8     6     4     2    10
 9     7     5     3     1
10     8     6     4     2

我想要在r中使用相同的逻辑(我只显示了与for循环相关的代码,而其他事情,即初始赋值与上面提到的Matlab代码相同),我尝试在r中执行以下操作,但它显示了错误。我是r编程的初学者,需要帮助将矩阵A的列分配给矩阵A1(空矩阵)的其他列。

for(i in seq(from=1, to=10, by=2)){
 count=count+1
 A1[c(1:10),(1:count)]=A[C(1:10),(1:i)]    
 }

 Error in C(1:10): object not interpretable as a factor

在结果矩阵中,我不想选择原始矩阵的奇数或偶数列。但是矩阵A1和矩阵A的第一列应该相同,而我可以通过更改步长大小来选择矩阵A1的其余列,如下面的Matlab代码

所示
 A1 = A(:,1:3:10);    

>> A1

A1 =

 1     8     5     2
 2     9     6     3
 3    10     7     4
 4     1     8     5
 5     2     9     6
 6     3    10     7
 7     4     1     8
 8     5     2     9
 9     6     3    10
10     7     4     1

  A1 = A(:,1:4:10);    

>> A1

 A1 =

 1     7     3
 2     8     4
 3     9     5
 4    10     6
 5     1     7
 6     2     8
 7     3     9
 8     4    10
 9     5     1
10     6     2

0 个答案:

没有答案