r语言 - 清理要使用的数据(Grep)或(str_extract_all)



我需要从数据集中提取所有提到"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匹配-,然后是meanstd(因为(...)是一个分组结构,允许在更大的表达式中枚举替代方案),然后是(,然后是)(这些必须用文字符号转义-这就是为什么它在R代码中翻倍)。

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

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

在这里,不需要分组结构,因为表达式中只有两个选项。

相关内容

  • 没有找到相关文章

最新更新