Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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 使用模式更改矩阵中的多个值_R - Fatal编程技术网

R 使用模式更改矩阵中的多个值

R 使用模式更改矩阵中的多个值,r,R,我的输入矩阵 set.seed(123) m1 <- matrix(sample(letters, 50, replace=TRUE), 5) 这是不正确的。使用一个简单的循环: for(i in 1:4) m1[m1 %in% letters[seq(i,26,by=4)]] <- LETTERS[i] > m1 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] "D" "B" "A" "D" "D

我的输入矩阵

set.seed(123)
m1 <- matrix(sample(letters, 50, replace=TRUE), 5) 

这是不正确的。

使用一个简单的
循环:

for(i in 1:4) m1[m1 %in% letters[seq(i,26,by=4)]] <- LETTERS[i]

> m1
 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] "D"  "B"  "A"  "D"  "D"  "C"  "B"  "A"  "D"  "D"  
[2,] "A"  "B"  "D"  "C"  "C"  "C"  "D"  "D"  "C"  "C"  
[3,] "C"  "D"  "B"  "B"  "A"  "D"  "B"  "B"  "C"  "A"  
[4,] "C"  "C"  "C"  "A"  "B"  "D"  "A"  "A"  "B"  "C"  
[5,] "A"  "D"  "C"  "A"  "B"  "D"  "A"  "C"  "D"  "C"
对于(1:4中的i)m1[m1%以%字母表示[seq(i,26,by=4)]]m1
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1]“D”“B”“A”“D”“D”“C”“B”“A”“D”“D”
[2,][A”“B”“D”“C”“C”“C”“D”“D”“C”“C”
[3]“C”“D”“B”“B”“A”“D”“B”“B”“C”“A”
[4]“C”“C”“C”“A”“B”“D”“A”“A”“B”“C”
[5]“A”“D”“C”“A”“B”“D”“A”“C”“D”“C”

这里有一种使用模块运算的方法:

matrix(toupper(letters)[((match(m1, letters) - 1) %% 4) + 1], ncol=ncol(m1))

#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] "D"  "B"  "A"  "D"  "D"  "C"  "B"  "A"  "D"  "D"  
# [2,] "A"  "B"  "D"  "C"  "C"  "C"  "D"  "D"  "C"  "C"  
# [3,] "C"  "D"  "B"  "B"  "A"  "D"  "B"  "B"  "C"  "A"  
# [4,] "C"  "C"  "C"  "A"  "B"  "D"  "A"  "A"  "B"  "C"  
# [5,] "A"  "D"  "C"  "A"  "B"  "D"  "A"  "C"  "D"  "C"

@马修普劳德:哎呀,我必须在没有重置种子的情况下运行原始矩阵生成行两次。现在已修复。@hadley确实是,一个没有。也许可以稍微解压一下这一个的详细信息(特别是
匹配的
%%
部分)。但除此之外+1.+1,有点短了。m1[]
matrix(toupper(letters)[((match(m1, letters) - 1) %% 4) + 1], ncol=ncol(m1))

#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] "D"  "B"  "A"  "D"  "D"  "C"  "B"  "A"  "D"  "D"  
# [2,] "A"  "B"  "D"  "C"  "C"  "C"  "D"  "D"  "C"  "C"  
# [3,] "C"  "D"  "B"  "B"  "A"  "D"  "B"  "B"  "C"  "A"  
# [4,] "C"  "C"  "C"  "A"  "B"  "D"  "A"  "A"  "B"  "C"  
# [5,] "A"  "D"  "C"  "A"  "B"  "D"  "A"  "C"  "D"  "C"