问题

我在数据框中的前导和尾随空格有一些麻烦. 例如,我喜欢看一个基于一定条件的 data.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. Is there a nice way to 'show' the whitespace on my screen so that i am aware of the problem?
  2. And can I remove the leading and trailing whitespace in R?

到目前为止,我曾经写过一个简单的 Perl 脚本,它删除了空格,但是如果我能在R里面做的话,会很好.



解决方法

可能最好的方法是在读取数据文件时处理尾部空白.如果使用 read.csv read.table ,您可以设置参数 strip.white = TRUE .

如果您想以后清除字符串,您可以使用以下函数之一:

# returns string w/o leading whitespace
trim.leading <- function (x)  sub("^\\s+", "", x)

# returns string w/o trailing whitespace
trim.trailing <- function (x) sub("\\s+$", "", x)

# returns string w/o leading or trailing whitespace
trim <- function (x) gsub("^\\s+|\\s+$", "", x)

要在 myDummy $ country :

上使用这些函数之一
 myDummy$country <- trim(myDummy$country)

要显示您可以使用的空格:

 paste(myDummy$country)

它会显示用引号(")括起来的字符串,使空格更容易识别.




相关问题推荐