提问人:nouse 提问时间:11/8/2023 最后编辑:nouse 更新时间:11/8/2023 访问量:36
无法从字符串中删除尾随空格
Not being able to remove trailing spaces from character strings
问:
我有一个非常奇怪的数据框列(结构为“chr”):
metadata$dummy
[1] "SKF1_sample_037 " "SKF3_sample_040 "
尾随空格已在 excel 文件中。文件另存为制表符分隔的文本,并用
metadata <- read.table("some_name.txt", sep="\t", header = T,
fileEncoding='latin1', check.names = F, row.names = 1)
请注意,如果没有参数,R 无法读取文件fileEncoding='latin1'
Error in make.names(col.names, unique = TRUE) :
invalid multibyte string 3
excel 中的 TRIM(X) 函数也不起作用。删除空格的唯一方法是在每个单元格中手动使用退格键,但这是不可能的。
如果我现在想删除 R 中的尾随空格,什么都不起作用:
library(stringr)
metadata$dummy <- str_replace_all(metadata$dummy, fixed(" "), "")
metadata$dummy <- gsub(" ", "", metadata$dummy, fixed = TRUE)
metadata$dummy <- trimws(metadata$dummy, "r")
所有这些命令都会生成带有尾随空格的相同字符串
metadata$dummy
[1] "SKF1_sample_037 " "SKF3_sample_040 "
什么样的错误会导致这种行为?
/编辑:
我也无法使用记事本++中的简单“将任何空格替换为无”命令从文本文件中删除任何空格
答:
1赞
SamR
11/8/2023
#1
你的角色不是一个空间,这就是为什么不起作用。你有一个不间断的空间。您应该能够在文本编辑器中生成一个:trimws()
Alt + 0 + 1 + 6 + 0
(您需要使用数字键盘,而不是字母上方的数字键。
要特别替换此字符,您可以执行以下操作:
gsub(rawToChar(as.raw(c(0xc2, 0xa0))), "", metadata$dummy)
或者,您可以列出要保留的所有字符。在这种情况下,我放置了字母、数字和下划线:
gsub("[^A-Za-z0-9_]", "", metadata$dummy)
评论
1赞
nouse
11/8/2023
我使用了 gsub 命令,它运行良好。谢谢!
评论
charToRaw(sub("SKF1_sample_\\d{3}", "", metadata$dummy[1]))
20
\s
gsub("\\s", "", metadata$dummy)