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

问题描述:

我需要从数据集中提取所有提及“mean”和“std”(标准差)的元素。清理要使用的数据(Grep)或(str_extract_all)

它是如何写在专长,列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]) 

它工作正常,但我不明白反斜杠的意思。

我不明白它到底意味着什么,我不想使用它。

+3

请示出一些可重复的例子 – akrun

+0

尝试'grep('mean | std',feat [,2])'或更复杂的正则表达式... – drmariod

+0

请学习如何[格式化您的问题文本](http:// stackoverflow .com/editing-help) – Jaap

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

,你发现:

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

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

如果你想表达的是一种矫枉过正,你只需要找到既stdmean条目子,你可以用一个简单的

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

在这里,没有分组构造是必要的,因为你只在表达中有两种选择。