R-高效循环矩阵
我有一个矩阵(名为“my_矩阵”),有150列(colname是1,2,3,4,5,6,7,…)和100000行 我执行以下操作: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(
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
vsmy_matrix
,最后一行是括号。通常情况下,对于“如何有效循环”的众多新手问题,正确答案是在R中只是为了避免执行循环。奇怪的是,有人知道为什么在4行中执行此操作似乎比在1中替换更快吗?即使保留j1
,这样就不会计算两次,在4行中仍然是一个更快的提示。