我需要从数据集中提取所有提及"意思是"和" 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])
它工作正常但我不明白反冲的含义。
我不明白它究竟意味着什么,我不想使用它。
答案 0 :(得分:0)
您需要的是正则表达式模式中的alternation operator |
。 grep
允许使用文字值(使用fixed=TRUE
时)或正则表达式(默认情况下)。
现在,您找到了:
meansd<-grep("-(mean|std)\\(\\)",feat[,2])
-(mean|std)\(\)
正则表达式与-
匹配,然后是mean
或std
(因为(...)
是grouping construct,允许在内部枚举替代品一个更大的表达式),然后(
然后)
(这些必须使用\
文字符号进行转义 - 这就是为什么它在R代码中加倍了。)
如果您认为表达式过大,并且您只想查找带有std
或mean
作为子字符串的条目,则可以使用更简单的
meansd<-grep("mean|std",feat[,2])
这里,由于表达式中只有两个备选项,因此不需要分组构造。