Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Loops_Matrix_Apply - Fatal编程技术网

R-高效循环矩阵

R-高效循环矩阵,r,loops,matrix,apply,R,Loops,Matrix,Apply,我有一个矩阵(名为“my_矩阵”),有150列(colname是1,2,3,4,5,6,7,…)和100000行 我执行以下操作: missing = c(50,57,60,77,99,101,102,109) for(i in 1:ncol(my_matrix)) { if(colnames(my_matrix)[i] %in% missing) { for(j in 1:nrow(my_matrix)) { if(grepl('_old$', rownames(

我有一个矩阵(名为“my_矩阵”),有150列(colname是1,2,3,4,5,6,7,…)和100000行

我执行以下操作:

missing = c(50,57,60,77,99,101,102,109)

for(i in 1:ncol(my_matrix)) {
  if(colnames(my_matrix)[i] %in% missing) {
    for(j in 1:nrow(my_matrix)) {
        if(grepl('_old$', rownames(my_matrix)[j])){
          my_matrix[j,i] <- my_matrix[gsub("_old", "_new", rownames(my_matrix)[j]),i]
        }
    }
  }
}
missing=c(50,57,60,77,99101102109)
for(i in 1:ncol(我的矩阵)){
if(colnames(my_矩阵)[i]%缺少百分比){
对于(j in 1:nrow(my_矩阵)){
if(grepl(“'u old$”,行名(my_矩阵)[j])){

my_matrix[j,i]我们创建列('j1')和行的索引(“新”和“旧”行名称),并使用行/列索引提取值,并替换为“新”行/列值中的值

 j1 <- colnames(my_matrix) %in% missing
 i1 <- grepl('_old$', rownames(my_matrix))
 i2 <- grepl('_new$', rownames(my_matrix))
 my_matrix[i1,j1] <- my_matrix(i2, j1]

j1您有一些打字错误;
mymatrix
vs
my_matrix
,最后一行是括号。通常情况下,对于“如何有效循环”的众多新手问题,正确答案是在R中只是为了避免执行循环。奇怪的是,有人知道为什么在4行中执行此操作似乎比在1中替换更快吗?即使保留
j1
,这样就不会计算两次,在4行中仍然是一个更快的提示。