由于某种原因,我的For循环中的这行gsub代码没有执行。基本上,我希望做的是针对元素开头和结尾的特定字符,我想把它去掉。所以在我的示例代码中,我只保留以0开头的值,否则就去掉它(在代码中,我处理的矩阵中存储的所有内容都是一个字符向量,我想做的是删除每个向量开头和结尾的重复的特定字符)。但是,在我的脚本运行完成后,m2没有任何变化
m2 <- matrix( c(2, 0, 0, 0, 2, 0, 0, 0, 2), nrow=3, ncol=3)
rownames(m2) <- c("a", "d", "e")
colnames(m2) <- c("x", "w", "z")
for (i in 1:length(rownames(m2))){
for (j in 1:length(colnames(m2))){
if (substr(m2[i,j], 1, 1) == "0") {
m2 <- m2
} else (m2 <- gsub("^.", "", m2))
}
}发布于 2020-06-09 11:38:22
在m2中,可以使用startsWith替换任何不是以0开头的内容
m2[!startsWith(as.character(m2), "0")] <- ''
m2
# x w z
#a "" "0" "0"
#d "0" "" "0"
#e "0" "0" "" 发布于 2020-06-09 11:57:04
我们可以使用replace
replace(m2, m2 != 0, "")
# x w z
#a "" "0" "0"
#d "0" "" "0"
#e "0" "0" "" 如果我们需要替换不是以'0‘开头的值
replace(m2, substr(m2, 1, 1) != 0, "")
# x w z
#a "" "0" "0"
#d "0" "" "0"
#e "0" "0" "" https://stackoverflow.com/questions/62274496
复制相似问题