我有一个非常奇怪的数据框列(其结构是“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)
注意,如果没有
fileEncoding='latin1'
参数,R 无法读取文件
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 "
我的什么样的错误会导致这种行为?
/编辑:
我也无法使用记事本++中的简单“用任何内容替换任何空格”命令从文本文件中删除任何空格
你的角色不是一个空格,这就是为什么
trimws()
不起作用。你有一个不间断的空间。您应该能够在文本编辑器中使用以下命令生成一个:
Alt + 0 + 1 + 6 + 0
(您需要使用数字键盘,而不是字母上方的数字键。)
要特别替换此字符,您可以执行以下操作:
gsub(rawToChar(as.raw(c(0xc2, 0xa0))), "", metadata$dummy)
或者,您可以列出所有要保留的字符。在本例中,我输入了字母、数字和下划线:
gsub("[^A-Za-z0-9_]", "", metadata$dummy)