【发布时间】:2016-01-27 17:59:38
【问题描述】:
我有一个矩阵(名为“my_matrix”),有 150 列(列名是 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”中找到。如果是这样,它会查看行的名称是否以“_old”结尾。如果是这样,则将单元格的值替换为另一个单元格的值(例如,将第 50 列和第 237478_old 行的值替换为第 50 列和第 237478_new 行的值等等)。
不幸的是,它非常慢,需要数小时才能完成执行。有没有更快的方法来执行这个操作(例如使用 apply)?
提前致谢!
【问题讨论】: