从上一个问题开始,我在使用正确的 reg 表达式语法来隔离特定单词时遇到问题。
给定一个数据框:
DL<-c("Dark_ark","Light-Lis","dark7","DK_dark","The_light","Lights","Lig_dark","D_Light")
Col1<-c(1,12,3,6,4,8,2,8)
DF<-data.frame(Col1)
row.names(DF)<-DL
我正在寻找从行名中提取所有“Dark”和“Light”(忽略大写与小写)并制作仅包含字符串“Dark”或“Light”的第二列
Col2<-c("Dark","Light","dark","dark","light","Light","dark","Light")
DF$Col2<-Col2
Col1 Col2
Dark_ark 1 Dark
Light-Lis 12 Light
dark7 3 dark
DK_dark 6 dark
The_light 4 light
Lights 8 Light
Lig_dark 2 dark
D_Light 8 Light
我稍微更改了原始数据以详细说明我当前的问题,但是根据 Tyler Rinker 的出色回答,我使用了这个:
DF$Col2<-gsub("[^dark|light]", "", row.names(DF), ignore.case = TRUE)
但是 gsub 被一些共同的字母绊倒了。搜索留言板以使用正则表达式隔离一个确切的单词,看起来答案应该是使用双斜杠
\\<light\\>
或者
\\blight\\b
那么为什么行
DF$Col2<-gsub("[^\\<dark\\>|\\<light\\>]", "", row.names(DF), ignore.case = TRUE)
没有将所需的列拉到上面?相反,我得到
Col1 Col2
Dark_ark 1 Darkark
Light-Lis 12 LightLi
dark7 3 dark
DK_dark 6 DKdark
The_light 4 Thlight
Lights 8 Light
Lig_dark 2 Ligdark
D_Light 8 DLight