我的列名称采用以下格式:
col= c('UserLanguage','Q48','Q21...20','Q22...21',"Q22_4_TEXT...202")
我想获取列名,但不包含...之后的所有内容
[1] "UserLanguage" "Q48" "Q21" "Q22" "Q22_4_TEXT"
我不知道如何编码。我找到了这篇文章here但我不确定如何在我的情况下指定模式。
最佳答案
您可以使用gsub
。
gsub("\\...*","",col)
#[1] "UserLanguage" "Q48" "Q21" "Q22" "Q22_4_TEXT"
或者您可以使用stringr
library(stringr)
str_remove(col, "\\...*")
由于 .
匹配任何字符,因此我们需要“转义”(\
) 来准确指定我们想要在正则表达式中匹配的内容(并且不使用特殊的.
的行为)。因此,为了匹配句点,我们需要 \.
。但是,反斜杠 (\
) 用于转义正则表达式中的特殊行为(例如,字符串中的转义符号)。因此,要创建正则表达式,我们需要一个额外的反斜杠 \\.
在本例中,我们想要匹配其他句点,因此我们可以在此处添加它们,因此 \\.. .
。然后,*
指定前一个表达式(三个句点的所有内容)可能出现 0 次或多次。
关于r - 如何删除数据框中列名的特定部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70888936/