首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gsub in for循环没有运行吗?

问gsub in for循环没有运行吗?
EN

Stack Overflow用户
提问于 2020-06-09 11:25:02
回答 2查看 72关注 0票数 2

由于某种原因,我的For循环中的这行gsub代码没有执行。基本上,我希望做的是针对元素开头和结尾的特定字符,我想把它去掉。所以在我的示例代码中,我只保留以0开头的值,否则就去掉它(在代码中,我处理的矩阵中存储的所有内容都是一个字符向量,我想做的是删除每个向量开头和结尾的重复的特定字符)。但是,在我的脚本运行完成后,m2没有任何变化

代码语言:javascript
复制
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))
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-09 11:38:22

在m2中,可以使用startsWith替换任何不是以0开头的内容

代码语言:javascript
复制
m2[!startsWith(as.character(m2), "0")] <- ''
m2

#   x   w   z  
#a ""  "0" "0"
#d "0" ""  "0"
#e "0" "0" "" 
票数 0
EN

Stack Overflow用户

发布于 2020-06-09 11:57:04

我们可以使用replace

代码语言:javascript
复制
replace(m2, m2 != 0, "")
#    x   w   z  
#a ""  "0" "0"
#d "0" ""  "0"
#e "0" "0" "" 

如果我们需要替换不是以'0‘开头的值

代码语言:javascript
复制
replace(m2, substr(m2, 1, 1) != 0, "")
#   x   w   z  
#a ""  "0" "0"
#d "0" ""  "0"
#e "0" "0" "" 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62274496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档