从 R 中的字符串中删除不间断空格

问题描述 投票:0回答:1

我有一个非常奇怪的数据框列(其结构是“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 "

我的什么样的错误会导致这种行为?

/编辑:

我也无法使用记事本++中的简单“用任何内容替换任何空格”命令从文本文件中删除任何空格

r excel
1个回答
1
投票

你的角色不是一个空格,这就是为什么

trimws()
不起作用。你有一个不间断的空间。您应该能够在文本编辑器中使用以下命令生成一个:

Alt + 0 + 1 + 6 + 0

(您需要使用数字键盘,而不是字母上方的数字键。)

要特别替换此字符,您可以执行以下操作:

gsub(rawToChar(as.raw(c(0xc2, 0xa0))), "", metadata$dummy)

或者,您可以列出所有要保留的字符。在本例中,我输入了字母、数字和下划线:

gsub("[^A-Za-z0-9_]", "", metadata$dummy)
© www.soinside.com 2019 - 2024. All rights reserved.