如何在unix中grep列表的子列表,如grep -f? 說我有一個數據幀來自dataframe的主列表中的R grep子列表
A 1 3 4
B 4 5 6
C 7 8 9
D 1 3 4
E 1 3 3
F 2 4 5
,我只需要
A 1 3 4
C 7 8 9
E 1 3 3
F 2 4 5
通過像grep c(A C E F)
?非常感謝!
如何在unix中grep列表的子列表,如grep -f? 說我有一個數據幀來自dataframe的主列表中的R grep子列表
A 1 3 4
B 4 5 6
C 7 8 9
D 1 3 4
E 1 3 3
F 2 4 5
,我只需要
A 1 3 4
C 7 8 9
E 1 3 3
F 2 4 5
通過像grep c(A C E F)
?非常感謝!
我假設A
C
E
F
是rownames。 Assumming您的數據幀被稱爲dd
,基本的子集應該做的伎倆:
##Select rows where the rownames are in a particular vector
dd[rownames(dd) %in% c("A", "C", "E", "F"), ]
假設A..F
來自V1
列,您可以使用grepl
返回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
如果你想完全在第一欄中爲A,C,E或F並且需要使用grep
的情況則:
dfrm[ grep("^[ACEF]$", dfrm[,1]), ]
如果這些信件是rownames然後用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,並參閱Import/Export Manual(導入/導出手冊)瞭解更多背景信息。它是你的R安裝的一部分。使用你的幫助設施。在我的機器上它位於R目錄中:.... /doc/manual/R-data.html
謝謝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!
謝謝!我想更進一步,因爲數據框是128行,包含105k行(128 x 105k),我的rownames ID是3500保存在不同的文件「subsetID.txt」中。如何檢索數據框的子集?再次感謝! – Ivan 2013-02-21 20:13:30
希望有一種方法可以將所有答案組合在一起!我試圖從另一個文件中grep一個向量/列,這是我的數據框的colnames的子集。子集<-read.table(「list.tab」,header = F) dfrm [grepl(subset [,1],dfrm [,1]),]但沒有穿過。任何線索?再次感謝! – Ivan 2013-02-21 21:38:58