删除在 R 的开头和结尾包含句点的行



我在R中有一个包含一百多行字符的数据集。

我正在尝试删除所有以"."句点字符开头和结尾的行。 我首先将这些行设置为空白,然后通过将它们写入.csv文件来删除它们。 问题出在第一部分,如何首先将它们设置为空白?

下面是我尝试过的 gsub 命令,但不对任何行执行任何操作。

#remove all periods followed by a space
data$text<- gsub('^([.][.])$', '', data$text)
data$text <- gsub('[.]*$',"",data$text) # with over a hundred rows
Value   text
1     male occupied
2     male occupied
3     female occupied
4     . . . .
5     male occupied
6     . . .
7     female occupied
8     . .

我的预期输出:

Value   text
1     male occupied
2     male occupied
3     female occupied
5     male occupied
7     female occupied

如何在 R 中执行此操作? gsub 是要走的路吗?

gsub是从字符串中删除/替换子字符串的全局替换。 据?gsub

两个 *sub 函数的区别仅在于 sub 仅替换模式的第一次出现,而 gsub 替换所有出现。

在这里,目的是在向量中找到模式的位置,并删除向量或列中的这些元素(从 data.frame 中删除行)。grep文件说

grep、

grepl、regexpr、gregexpr 和 regexec 在字符向量的每个元素中搜索与参数模式的匹配项:它们在结果的格式和细节量上有所不同。

因此,我们得到数字索引(grep)或逻辑向量(grepl)输出,并子集ddata

df1[!grepl("^\.|\.$", df1$text),]

在这里,我们匹配一个.(.是任何字符的元字符 - 所以要获得字面意思,要么转义(\)或将其放在方括号([.])或使用fixed = TRUE- 这里有|,所以我们不能使用该选项)在字符串的开头(^)或结尾($)返回一个带有grepl的逻辑向量, 否定 (!),以便 TRUE -> FALSE 和 FALSE -> TRUE 并使用它来过滤行。

最新更新