0

How to grep a sublist of a list like grep -f in unix? say I have a dataframe

A 1 3 4 
B 4 5 6
C 7 8 9
D 1 3 4
E 1 3 3
F 2 4 5

and I only need

A 1 3 4 
C 7 8 9
E 1 3 3
F 2 4 5

by like grep c(A C E F) ? Thanks a lot!

4

4 回答 4

2

I'm assuming the A C E F are rownames. Assumming that your data frame is called dd, basic subsetting should do the trick:

##Select rows where the rownames are in a particular vector
dd[rownames(dd) %in% c("A", "C", "E", "F"), ]
于 2013-02-21T18:58:53.983 回答
1

假设A..F来自 column V1,您可以使用greplwhich 返回TRUE/FALSE

# gives TRUE when V1 != B, D
df[grepl("[^BD]", df$V1), ]

#   V1 V2 V3 V4
# 1  A  1  3  4
# 3  C  7  8  9
# 5  E  1  3  3
# 6  F  2  4  5
于 2013-02-21T19:21:39.010 回答
1

如果您想要第一列中的情况是 A、C、E 或 F 并且需要使用,grep那么:

 dfrm[ grep("^[ACEF]$", dfrm[,1]), ]

如果这些字母是行名,则使用rownames(dfrm)而不是dfrm[,1]

要创建新对象:

 newobj <- dfrm[ grep("^[ACEF]$", dfrm[,1]), ] 

对您的评论:要保存为 R 对象以稍后load进入会话:

 save( newobj , file='newobj_file.rda')

要另存为文本文件:

 write.table( newobj, file='newobj_out.txt')

有关各种选项,请参阅 ?write.table,并参阅导入/导出手册了解更多背景信息。它是 R 安装的一部分。使用您的帮助设施。在我的机器上,它位于 R 目录中: .... /doc/manual/R-data.html

于 2013-02-21T19:37:11.617 回答
0

感谢 DWin 和 csgillespie!诀窍是我应该更加注意的向量。

>dfrm
A 1 3 4 
B 4 5 6
C 7 8 9
D 1 3 4
E 1 3 3
F 2 4 5

我的兴趣列表存储在一个文件中

subset <-read.table("infile", header=F)
>subset
1 A
2 C
3 E
4 F
> dfrm[rownames(dfrm) %in% subset[,1], ]
A 1 3 4 
C 7 8 9
E 1 3 3
F 2 4 5

我应该知道子集也是一个数据框。子集[,1] 发挥了作用。谢谢csgillespie!

于 2013-02-21T22:13:43.247 回答