小编典典

如何修剪前导和尾随空白?

all

我在 data.frame 中的前导和尾随空格时遇到了一些麻烦。

例如,我根据某个条件查看一个特定的rowdata.frame

> myDummy[myDummy$country == c("Austria"),c(1,2,3:7,19)]



[1] codeHelper     country        dummyLI    dummyLMI       dummyUMI

[6] dummyHInonOECD dummyHIOECD    dummyOECD

<0 rows> (or 0-length row.names)

我想知道为什么我没有得到预期的输出,因为奥地利显然存在于我的data.frame. 在查看了我的代码历史并试图找出问题所在后,我尝试了:

> myDummy[myDummy$country == c("Austria "),c(1,2,3:7,19)]
   codeHelper  country dummyLI dummyLMI dummyUMI dummyHInonOECD dummyHIOECD
18        AUT Austria        0        0        0              0           1
   dummyOECD
18         1

我在命令中所做的只是在奥地利之后增加了一个空格。

显然会出现更多恼人的问题。例如,当我喜欢根据国家列合并两个框架时。一个data.frame使用"Austria ",而另一个框架有"Austria"。匹配不起作用。

  1. 有没有一种很好的方法可以在我的屏幕上“显示”空白区域,以便我意识到问题所在?
  2. 我可以删除R中的前导和尾随空格吗?

到目前为止,我曾经编写过一个简单的Perl脚本来消除白人的节奏,但如果我能以某种方式在
R 中做到这一点,那就太好了。


阅读 91

收藏
2022-03-24

共1个答案

小编典典

可能最好的方法是在读取数据文件时处理尾随空格。如果你使用read.csv或者read.table你可以设置参数strip.white=TRUE

如果您想在之后清理字符串,您可以使用以下功能之一:

# Returns string without leading white space
trim.leading <- function (x)  sub("^\\s+", "", x)

# Returns string without trailing white space
trim.trailing <- function (x) sub("\\s+$", "", x)

# Returns string without leading or trailing white space
trim <- function (x) gsub("^\\s+|\\s+$", "", x)

要在 上使用这些功能之一myDummy$country

 myDummy$country <- trim(myDummy$country)

要“显示”您可以使用的空白:

 paste(myDummy$country)

这将显示用引号 (“) 包围的字符串,使空格更容易被发现。

2022-03-24