【问题标题】:gsub not working for dataframe's variable Rgsub 不适用于数据框的变量 R
【发布时间】:2021-10-11 19:44:22
【问题描述】:

我不明白我做错了什么。 我有一个数据框,其中一个变量看起来像这样。

ss <- c("F00020 " ,  "F13975 "  , "F13976 " ,  "F15334 " ,  "F12490 "  , "F09787 "  , "F14675 "  , 
  "F12129 " ,  "F04641 " ,  "F04680 " ,  "F04715 " ,  "F04753 " ,  "F08868 " ,  "F14031 "  ,
 "F14033 " ,  "F12585 " ,  "F14663 ") 

我想省略多余的空格。

gsub("[[:space:]]","",ss)

上面的代码有效,但是如果我直接从数据框中调用变量,它就不起作用了。

gsub("[[:space:]]","",df$Variable)

我还检查了向量/变量的类型,两者都与字符向量相同。 那么这里发生了什么?

【问题讨论】:

  • 您是否尝试重新分配更改后的向量?
  • 是的,我试过不帮忙

标签: r gsub


【解决方案1】:

我无法重现您的错误:

ss <- c("F00020 " ,  "F13975 "  , "F13976 " ,  "F15334 " ,  "F12490 "  , "F09787 "  , "F14675 "  , 
        "F12129 " ,  "F04641 " ,  "F04680 " ,  "F04715 " ,  "F04753 " ,  "F08868 " ,  "F14031 "  ,
        "F14033 " ,  "F12585 " ,  "F14663 ") 

gsub("[[:space:]]","",ss)

[1] "F00020" "F13975" "F13976" "F15334" "F12490" "F09787" "F14675" "F12129" "F04641" "F04680" "F04715"
[12] "F04753" "F08868" "F14031" "F14033" "F12585" "F14663"

df <- data.frame(Variable = ss)
gsub("[[:space:]]","",df$Variable)

[1] "F00020" "F13975" "F13976" "F15334" "F12490" "F09787" "F14675" "F12129" "F04641" "F04680" "F04715"
[12] "F04753" "F08868" "F14031" "F14033" "F12585" "F14663"

【讨论】:

  • 是的,我发现自己创建的数据集有问题。它与 gsub 函数无关。
【解决方案2】:

使用trimws 可以轻松解决您的用例:

trimws(ss)
 [1] "F00020" "F13975" "F13976" "F15334" "F12490" "F09787" "F14675" "F12129" "F04641" "F04680" "F04715"
[12] "F04753" "F08868" "F14031" "F14033" "F12585" "F14663"

是的,正如其他人所指出的那样,您的解决方案也确实有效,就像这个,更短的一样:

sub("\\s", "", ss) # no `gsub` needed **iff** there's always just one whitespace per string (in whatever position)

【讨论】:

    猜你喜欢
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    相关资源
    最近更新 更多