【问题标题】:preventing format change due to gsub() [duplicate]防止由于 gsub() 而导致格式更改 [重复]
【发布时间】:2020-02-26 13:18:19
【问题描述】:

我有一个名为 dataframe 的 data.frame,我想用 Hs 替换所有零。我用 gsub 完成了它,它运行良好,但是当我调用替换的数据框时会出现“格式更改”。我希望 dataframe 看起来像 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()试验也会改变格式;(

感谢您的热心帮助

【问题讨论】:

  • 您可以将rapply()how = "replace" 一起使用,或者您可以将lapply() 与以下内容一起使用:dataframe[] &lt;- lapply(dataframe, function(x) gsub("0", "H", x, fixed = T)
  • 是的,@Andrew 你是对的。我还没有抽象出我的问题。谢谢

标签: r dataframe gsub


【解决方案1】:

如果您使用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"))

【讨论】:

    猜你喜欢
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2018-04-03
    • 2020-08-03
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多