从 R 中的数据框中删除白色 space

Removing white space from data frame in R

我抓取了一些数据并将其存储在数据框中。某些行在方括号内包含不需要的信息。示例“[N] 团队名称”。 我只想保留包含团队名称的部分,所以首先我使用下面的代码删除括号和其中包含的任何文本

gsub( " *\(.*?\) *", "", x)

这给我留下了“团队名称”(注意 T 之前的 space)。 现在我正在尝试使用 trimws 或显示的方法 here 删除 T 之前的白色 space,但它不起作用

谁能帮我去掉多余的白色 space。

注意:如果我手动编写包含 space 的字符串并对其应用 trimws,它就可以工作。但是,当直接从数据框中获取字符串时,它不会。此外,当 运行 下面的代码片段(其中 df[1,1] 是从数据框中检索到的相同字符串)时,我得到 FALSE。这让我有理由相信数据框中的字符串与手动输入的字符串不同。

" team name" == df[1,1]

您应该能够使用单个正则表达式替换来删除括号内的部分以及任何后续空格。您的正则表达式按原样正确,应该可以成功完成此操作。 (注意:我忽略了您在问题中使用 parenthesessquare brackets 之间无法解释的差异。我假设方括号为我的答案。)

奇怪的是,这似乎是默认正则表达式引擎失败的情况,但添加 perl=T 使其正常工作:

x <- '[N] Team Name';
gsub(' *\[.*?\] *','',x);
## [1] " Team Name"
gsub(perl=T,' *\[.*?\] *','',x);
## [1] "Team Name"

过去,我遇到过 运行 种默认正则表达式引擎出现问题的情况,但我从未在 perl=T 中遇到过这种情况,因此我建议您使用它。我真的认为默认的正则表达式实现有问题。

我们可以使用

sub(".*\]\s+", "", x)
#[1] "Team Name"

或者只是

sub("\S+\s+", "", x)
#[1] "Team Name"

数据

x <- '[N] Team Name';

你可以试试

gsub( "\[[^]]*\]\W*", "", "[N] Team Name")