从字符串中删除单个空格

Remove Single Spaces From String

我正在努力解析一些困难的数据,需要只删除单个空格。我的数据行如下例所示

[1] "  Class                                Dist   Quantity    Market   Taxable/$                        "
[2] " 4-2101 THIS LAND                     28       108.85    216797     6352.00                        "
[3] "99-9084 FIRE PROTECTION               9084       0.00         0       26.95                        "
[4] "99-9093 COUNTY VALLEY SOIL            9093       0.00         0     6352.00                        "

如果我可以通过删除单个空格来压缩带连字符的数字和描述,那么我就可以使用 read.table.

阅读文本

我如何遍历行并将单个空格替换为无空格?结果数据看起来像

[1] "  Class                                Dist   Quantity    Market   Taxable/$                        "
[2] " 4-2101THISLAND                     28       108.85    216797     6352.00                        "
[3] "99-9084FIREPROTECTION               9084       0.00         0       26.95                        "
[4] "99-9093COUNTYVALLEYSOIL            9093       0.00         0     6352.00                        "

您可以使用 gsub 命令。

data$Class <- gsub("\s{1}(\S)", "\1", data$Class)

根据 rawr 的建议进行编辑。

您也可以在不删除属于 'Class' 列的单词之间的空格的情况下执行此操作。

v1 <- gsub('^\s+|\s+$', '', v1)
v1[-1] <- gsub('(?<=[A-Za-z]|^\b)\s*(?=\d+)', "'", v1[-1], perl=TRUE)
 read.table(text=v1, header=TRUE, stringsAsFactors=FALSE, check.names=FALSE)
 #                       Class Dist Quantity Market Taxable/$
 #1           4-2101 THIS LAND   28   108.85 216797   6352.00
 #2    99-9084 FIRE PROTECTION 9084     0.00      0     26.95
 #3 99-9093 COUNTY VALLEY SOIL 9093     0.00      0   6352.00

数据

v1 <- c("  Class                                Dist   Quantity    Market   Taxable/$                        ", 

 " 4-2101 THIS LAND                     28       108.85    216797     6352.00                        ", 
 "99-9084 FIRE PROTECTION               9084       0.00         0       26.95                        ", 
 "99-9093 COUNTY VALLEY SOIL            9093       0.00         0     6352.00                        "
)