防止由于 gsub() 引起的格式更改

preventing format change due to gsub()

我有一个名为 dataframe 的 data.frame,我想用 Hs 替换所有的零。我用 gsub 做到了,效果很好,但是当我调用替换的数据帧时有一个 "format change" 。我希望数据框看起来像 data.frame(如果你明白我的意思的话)

dataframe
# A tibble: 3 x 3
     c1    c2    c3
* <dbl> <dbl> <dbl>
1    78    89    56
2    89    89     0
3     0    34     4
> gsub("0","H",dataframe)
[1] "c(78, 89, H)"  "c(89, 89, 34)" "c(56, H, 4)"  
> dataframe <- gsub("0","H",dataframe)
> dataframe
[1] "c(78, 89, H)"  "c(89, 89, 34)" "c(56, H, 4)"  

如何在不更改数据框外观的情况下(使用 gsub)替换某些内容(如下面的 [1] 所示)。 str_replace()apply()试验也改变了格式;(

感谢您的帮助

如果您使用gsub,您可以unlist并使用[]保持原始尺寸。

dataframe[] <- gsub("0","H",unlist(dataframe))
dataframe

#  c1 c2 c3
#1 78 89 56
#2 89 89  H
#3  H 34  4

不过,这样不是更简单吗?

dataframe[dataframe == 0] <- 'H'

数据

dataframe <- structure(list(c1 = c(78L, 89L, 0L), c2 = c(89L, 89L, 34L), 
c3 = c(56L, 0L, 4L)), class = "data.frame", row.names = c("1", "2", "3"))