r - 如何在R中以一个变量为条件创建新矩阵?

标签 r for-loop matrix

我有一个长度为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/

相关文章:

r - 当一个变量实际上是两列时 expand.grid

c++ - 密集对称矩阵的特征有效类型

r - 如何根据另一个变量的值对 R 中的变量进行计数?

r - 关于purrr语法的清晰性

java - 使用 for 循环打印数字的每个数字

java - 编写代码打印字符串中任意空格的位置

Matlab:从矩阵中删除对角线并进行改革

r - 生成独特的用户-项目跨产品组合矩阵

r - 如何针对大型数据表优化 R 中的 for 循环

c - 检查 count-- 在 for 循环中会取消循环吗?