繁体   English   中英

从R中的数据框中删除空格

[英]Removing white space from data frame in R

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

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

这给我留下了“团队名称”(注意T之前的空格)。 现在,我尝试使用微调或此处显示的方法删除T之前的空白,但是它不起作用

有人可以帮我删除多余的空白吗?

注意:如果我手动编写包含空格的字符串并在其上应用修剪,它将起作用。 但是,当直接从数据帧中获取字符串时,它不会。 同样,当运行下面的代码片段时(其中df [1,1]是从数据帧检索到的相同字符串),我得到FALSE。 这使我有理由相信数据框中的字符串与手动键入的字符串不同。

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

你可以试试

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

您应该能够使用单个正则表达式替换删除方括号以及以下任何空格。 您的正则表达式是正确的,应该成功完成此操作。 (注意:我忽略了问题中使用括号方括号之间的无法解释的差异。我以方括号作为答案。)

奇怪的是,这似乎是默认正则表达式引擎失败的情况,但是添加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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM