我有一个大的data.frame值,这些值被分类到类似命名的组中:例如001G,002G,003G等。表中还有其他项目,但名称遵循类似约定但不同的字母。例如001R,002R,003R。我想要做的是选择以R结尾的所有文件以及以G结尾的所有文件。我试过[[“*** G”]]和[[“??? G”]]来徒劳无功。任何提示?
答案 0 :(得分:1)
以下是一些听起来与您描述的相似的数据:
set.seed(1)
fn <- paste(1:10, sample(c("R", "G", "S"), 10, replace = TRUE), sep = "")
df <- data.frame(file = fn, x = 1:10)
给出:
file x
1 1R 1
2 2G 2
3 3G 3
4 4S 4
5 5R 5
6 6S 6
7 7S 7
8 8G 8
9 9G 9
10 10R 10
要仅选择以R或G结尾的那些,请执行以下操作:
keep <- grep("G|R", df$file)
df <- df[keep,]
有关选择过程的详细信息,请参阅?grep
,您可以在较高程度上进行控制。结果是:
file x
1 1R 1
2 2G 2
3 3G 3
5 5R 5
8 8G 8
9 9G 9
10 10R 10
答案 1 :(得分:1)
尝试file_names <- dir()[grep('R$', dir())]
将grep()
中的第一个参数更改为'G$'
将抓取名称以'G'结尾的文件
如果他们有后缀,请尝试'R[.]csv$'
答案 2 :(得分:1)
我在这里使用grep功能 -
取样数据 -
> x<-c("001G", "002G", "003G","001R", "002R", "003R")
> a <- x[grep("G", x)]
> a
[1] "001G" "002G" "003G"
> b <- x[grep("R", x)]
> b
[1] "001R" "002R" "003R"
我不确定这是否是最有效的方法。但是,我相信它在某种程度上符合目的。