我需要从数据集中提取所有提到"mean"one_answers"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])
它工作得很好,但我不明白反弹的意思。
我不明白它到底是什么意思,我不想用它
您需要的是一个替换操作符 |
在一个正则表达式模式。grep
允许使用文字值(当使用fixed=TRUE
时)或正则表达式(默认情况下)。
现在,你发现:
meansd<-grep("-(mean|std)\(\)",feat[,2])
-(mean|std)()
regex匹配-
,然后是mean
或std
(因为(...)
是一个分组结构,允许在更大的表达式中枚举替代方案),然后是(
,然后是)
(这些必须用文字符号转义-这就是为什么它在R代码中翻倍)。
如果您认为表达式是多余的,并且您只想查找std
或mean
作为子字符串的条目,则可以使用更简单的
meansd<-grep("mean|std",feat[,2])
在这里,不需要分组结构,因为表达式中只有两个选项。