我有一个长度为20
的变量x
为
x
[1] 3 3 1 2 3 1 2 1 3 1 3 1 3 2 1 1 3 1 3 2.
现在我想创建一个 20 x 2
阶矩阵
其中第一列 W_i1
填充 1
如果 x==1
和 -1
如果 x不等于 1
。同样,如果 x=2
,第二列填充 1
,如果 x 不等于 2
,则第二列填充 -1
.如果 x=3
,则两列都由 -1
填充。这是预期的结果
W_ij
[,1] [,2]
[1,] -1 -1
[2,] -1 -1
[3,] 1 -1
[4,] -1 1
[5,] -1 -1
[6,] 1 -1
[7,] -1 1
[8,] 1 -1
[9,] -1 -1
[10,] 1 -1
[11,] -1 -1
[12,] 1 -1
[13,] -1 -1
[14,] -1 1
[15,] 1 -1
[16,] 1 -1
[17,] -1 -1
[18,] 1 -1
[19,] -1 -1
[20,] -1 1
我可以分别为每一列做,并记录为矩阵
W_i1=ifelse(x==1,1,-1)
W_i2=ifelse(x==2,1,-1)
W_ij=matrix(c(W_i1,W_i2),
nrow = 20,
ncol =2,
byrow = F)
我可以使用任何循环来完成吗?
感谢任何帮助?
最佳答案
最简单的转换方式是
cbind(x == 1, x == 2) * 2 - 1
[,1] [,2]
[1,] -1 -1
[2,] -1 -1
[3,] 1 -1
[4,] -1 1
[5,] -1 -1
[6,] 1 -1
[7,] -1 1
[8,] 1 -1
[9,] -1 -1
[10,] 1 -1
[11,] -1 -1
[12,] 1 -1
[13,] -1 -1
[14,] -1 1
[15,] 1 -1
[16,] 1 -1
[17,] -1 -1
[18,] 1 -1
[19,] -1 -1
[20,] -1 1
关于r - 如何在R中以一个变量为条件创建新矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60159254/