for 循环中的 gsub 不是 运行?
gsub in for loop not running?
出于某种原因,我的 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))
}
}
在 m2
中要替换任何不以 0 开头的内容,您可以使用 startsWith
m2[!startsWith(as.character(m2), "0")] <- ''
m2
# x w z
#a "" "0" "0"
#d "0" "" "0"
#e "0" "0" ""
我们可以使用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" ""
出于某种原因,我的 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))
}
}
在 m2
中要替换任何不以 0 开头的内容,您可以使用 startsWith
m2[!startsWith(as.character(m2), "0")] <- ''
m2
# x w z
#a "" "0" "0"
#d "0" "" "0"
#e "0" "0" ""
我们可以使用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" ""