-1
我在數字之前使用逗號作爲值,如‚0.10
。我想刪除尾隨,
以獲得類似0.10
看似簡單的刪除尾部逗號失敗
的數字我試過gsub(",", "", "‚0.10")
,但逗號不會被刪除。有什麼想法發生在這裏?
gsub(",", "", "‚0.10")
# [1] "‚0.10"
感謝
我在數字之前使用逗號作爲值,如‚0.10
。我想刪除尾隨,
以獲得類似0.10
看似簡單的刪除尾部逗號失敗
的數字我試過gsub(",", "", "‚0.10")
,但逗號不會被刪除。有什麼想法發生在這裏?
gsub(",", "", "‚0.10")
# [1] "‚0.10"
感謝
我覺得爲什麼你更換出現故障的原因,儘管它只是「應該工作」,是有在x
虎視眈眈一個控制字符。
如果我複製粘貼無論從OP pattern
和x
,問題重現:
gsub(pattern = ",", replacement = "", x = "‚0.10")
# [1] "‚0.10"
在另一方面,如果我複製粘貼pattern
從OP,但x
在類型我的編輯,我得到期望的結果:
gsub(pattern = ",", replacement = "", x = ",0.10")
# [1] "0.10"
因此,儘管兩個電話外觀s相同,他們的結果不同。
然後使用grepl
尋找控制字符([:cntrl:]
):
# copy-paste x from OP
grepl(pattern = "[[:cntrl:]]", x = "‚0.10")
# [1] TRUE
# type in x in editor
> grepl(pattern = "[[:cntrl:]]", x = ",0.10")
# [1] FALSE
事實上,也有一些是在原x
(而不是在x
I型)。
您可以使用stringi::stri_unescape_unicode
來查看隱藏在那裏的內容。再次,從字符串OP複製粘貼:
library(stringi)
stri_unescape_unicode(str = "‚0.10")
# [1] "\u00820.10"
雖然原"‚0.10"
的,
看起來像一個normal ,
,它是一個Unicode Character 'BREAK PERMITTED HERE' (U+0082)逗號這招數我們。
因此,如果這不能被固定的上游,可以使用:
gsub(pattern = "[[:cntrl:]]", replacement = "", x = "‚0.10")
# "0.10"
請提供一些數據,以測試。 – Jan
如果你的列是一個因子變量,它將不起作用 - 用'gsub(「,」,「」,as.character(x))來試試' –