【发布时间】:2016-07-19 18:05:22
【问题描述】:
我正在尝试根据列名在 R 中的数据框中选择列。我想要列名包含“活动”、“主题”或“原始数据集”或以“mean()”或“std()”结尾的列。当我这样做时
colselection <- grep('mean\\(\\)$|std\\(\\)$|subject|activity|originaldataset',
colnames(completedf))
selectdf <- completedf[,colselection]
我只得到带有“activity”、“subject”或“originaldataset”的列,没有以“mean()”或“std()”结尾的列。注意:“completedf”是原始的完整数据框。
列名示例:tBodyAccMag-mean()、tBodyAccMag-std()、tBodyAccJerkMag-mean()、tBodyAccJerkMag-std()。这些名称是从带有read.table 的文本文件中读取的,并且带有名称的列被放置在一个字符向量中,该字符向量稍后用于数据框“completedf”中的列名。
我在 Ubuntu 16.10 上运行 R Studio 版本 0.99.902 和 R 版本 3.2.3 (2015-12-10)。
【问题讨论】:
-
你正在转义
$,这是不需要的,即grep('mean\\(\\)$|std\\(\\)$|subject|activity|originaldataset', colnames(completedf)) -
在
R中,我们需要 \\ 而不是单个 \。 -
如果我执行
code'grep('mean\\(\\)$', colnames(completedf), value = TRUE),我会得到一个空字符向量。我也得到一个没有 $ 的空字符向量。很奇怪。 -
使用
grep('mean[:punct:]$', colnames(completedf), value = TRUE)也得到一个空结果 -
你没有显示列名,所以我们不知道你有什么。