清理要使用的数据(Grep)或(str_extract_all)

时间:2016-11-18 12:02:39

标签: r regex string grep text-extraction

我需要从数据集中提取所有提及"意思是"和" std"这是标准差。

如何写入专长的示例,第2列,变量。

目标>我试图只提取有这个写的元素。

"tBodyAcc-mean()-Z"
"tBodyAcc-std()-X"

feat<-read.table("features.txt")

我认为使用

grep("mean"&"std",feat[,2])

会起作用

但是不起作用,我有这个错误:

 "operations are possible only for numeric, logical or complex types"

我发现有人用过这个:

meansd<-grep("-(mean|std)\\(\\)",feat[,2]) 

它工作正常但我不明白反冲的含义。

我不明白它究竟意味着什么,我不想使用它。

1 个答案:

答案 0 :(得分:0)

您需要的是正则表达式模式中的alternation operator |grep允许使用文字值(使用fixed=TRUE时)或正则表达式(默认情况下)。

现在,您找到了:

meansd<-grep("-(mean|std)\\(\\)",feat[,2])

-(mean|std)\(\)正则表达式与-匹配,然后是meanstd(因为(...)grouping construct,允许在内部枚举替代品一个更大的表达式),然后(然后)(这些必须使用\文字符号进行转义 - 这就是为什么它在R代码中加倍了。)

如果您认为表达式过大,并且您只想查找带有stdmean作为子字符串的条目,则可以使用更简单的

meansd<-grep("mean|std",feat[,2])

这里,由于表达式中只有两个备选项,因此不需要分组构造。