小编JAB*_*ena的帖子

R重命名重复col和rownames(subindexing)

如果一个善良的灵魂能告诉我如何在R中做到这一点,我将非常感激:

给定具有重复列和行的平方矩阵,例如

       1     1     2     2     2     2     3
1  0.000 0.000 0.048 0.048 0.048 0.048 0.059
1  0.000 0.000 0.048 0.048 0.048 0.048 0.059
2  0.048 0.048 0.000 0.000 0.000 0.000 0.059
2  0.048 0.048 0.000 0.000 0.000 0.000 0.059
2  0.048 0.048 0.000 0.000 0.000 0.000 0.059
2  0.048 0.048 0.000 0.000 0.000 0.000 0.059
3  0.059 0.059 0.059 0.059 0.059 0.059 0.000
Run Code Online (Sandbox Code Playgroud)

在相同的col和row名称指定重复项的情况下,我需要具有唯一的col和row名称,同时跟踪原始和重复的cols/rows.就是这样的

        1    1a     2    2a    2b    2c     3
1   0.000 0.000 0.048 0.048 0.048 0.048 …
Run Code Online (Sandbox Code Playgroud)

r matrix

9
推荐指数
1
解决办法
4220
查看次数

更好的方法是在对称矩阵中用零替换矩阵元素

我有一个0对角线对称矩阵X,例如

          [1]        [2]       [3]        [4]        [5]    
[1]  0.00000000 0.07065048 0.1019865 0.23641082 0.23641082 
[2]  0.07065048 0.00000000 0.0000000 0.23641082 0.23641082 
[3]  0.10198654 0.00000000 0.0000000 0.00000000 0.23641082 
[4]  0.23641082 0.23641082 0.0000000 0.00000000 0.08870087 
[5]  0.23641082 0.23641082 0.2364108 0.08870087 0.00000000 
Run Code Online (Sandbox Code Playgroud)

我需要根据第二个矩阵Y用0替换它的一些元素:

      [1]    [2]
[1]    3      2
[2]    4      3
[3]    1      2
Run Code Online (Sandbox Code Playgroud)

因此X [3,2],X [4,3],X [1,2]和对称性的X [2,3],X [3,4],X [2,1]应该被替换零的.

我想出了这个解决方案:

for (i in 1:nrow(Y)) {
  X[Y[i,1], Y[i,2]] <- 0
  X[Y[i,2], Y[i,1]] <- 0 
}
Run Code Online (Sandbox Code Playgroud)

这是诀窍,但我想知道是否有更好,更有效的方法来使用类似应用的函数进行编码.

非常感谢您的关注.

replace r matrix

5
推荐指数
1
解决办法
129
查看次数

根据参考矩阵中的列、行名称用 0 ins 对称矩阵替换值

正如标题所述,我需要根据另一个矩阵 (B) 中给出的列和行名称,将对称矩阵 (A) 中的值替换为 0。例如,

A <-matrix(c(0,1,2,3,4,1,0,1,2,3,2,1,0,1,2,3,2,1,0,3,4,3,2,3,0), 5)
colnames(A) <- rownames(A) <-c(LETTERS[1:5])
A

    A B C D E
  A 0 1 2 3 4
  B 1 0 1 2 3
  C 2 1 0 1 2
  D 3 2 1 0 3
  E 4 3 2 3 0

B <- matrix(c("A","B","C","B","D","E","E","C"),4)

B      #reference matrix

     [,1] [,2]
 [1,] "A"  "D" 
 [2,] "B"  "E" 
 [3,] "C"  "E" 
 [4,] "B"  "C"
Run Code Online (Sandbox Code Playgroud)

我试过

A[B[,1],B[,2]]<-0 #for the above-diagonal half but it didn't work as …
Run Code Online (Sandbox Code Playgroud)

r matrix

4
推荐指数
1
解决办法
119
查看次数

随机化二进制对角矩阵的最佳方法,保持1对角线不对称

设A是n*n对角矩阵.说,n = 5:

A <- diag(1, 5)
A
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    0    0    0    0
[2,]    0    1    0    0    0
[3,]    0    0    1    0    0
[4,]    0    0    0    1    0
[5,]    0    0    0    0    1 
Run Code Online (Sandbox Code Playgroud)

我需要A按行随机化,让1离开对角线.我想出了这个解决方案:

n <- 5
count <- c(1:n)
for (i in count) {
  while (A[count[i], count[i]] == 1) {    #avoid 1 in diagonal
    A[count[i],] <- sample(A[count[i],])  #permutes ith row
  }
}
Run Code Online (Sandbox Code Playgroud)

但我很确定应该有一种更有效的方法来做到这一点.感谢您的关注.

r permutation

3
推荐指数
1
解决办法
102
查看次数

R:采样唯一的 X、Y 对,不重复 X 和 Y

我很难弄清楚如何在 R 中对其进行编程:给定许多 X 和 Y 对,例如

 X   Y
 9   1
 1   2
12   3
 8   4
 9   4
 4   5
16   6
18   7
 5   8
11   9
 4  10
 6  11
 6  12
14  13
18  13
20  13
13  14
20  15
20  16
Run Code Online (Sandbox Code Playgroud)

我需要随机抽取 n 对满足 X 和 Y 唯一的条件。例如,如果n=3并使用上述数据,则以下组合 (9,1) (4,5) (4,10) 或 (1,2) (14,13) (20,13) 将无效因为 X=4 或 Y=13 在每个解决方案中都是重复的。然而,(9,1) (1,2) 和 (8,4) 将是有效的解,因为 X 和 Y 是唯一的。任何帮助都会受到欢迎。

r sample unique

1
推荐指数
1
解决办法
1863
查看次数

标签 统计

r ×5

matrix ×3

permutation ×1

replace ×1

sample ×1

unique ×1