如何找到与名称合并的特定数据?

时间:2014-03-06 10:13:10

标签: r

我正在尝试在我的数据中找到特定基因的名称。这就是我到目前为止所做的:

gnames = unique(data_rd[,1])
gnames= gnames[2:length(gnames)]

gnames包含我必须找到名称的所有基因。

gdata = lapply(list_of_data,function(x) x[3:nrow(x),1,9])  

gdata是一组具有名称但在不同文件中的基因,其中一些基因可能会在少量文件中重复出现。

这就是我创建list_of_data的方式:

tbl = list.files(pattern="*.csv")
list_of_data = lapply(tbl, read.csv)

让我们在一个例子中解释一下:

gnames:

Gene1
Gene2
Gene3
Gene4
Gene5
Gene6
Gene7

gdata:

Gene1 NameOfGene1
Gene5 NameOfGene5
Gene7 NameofGene7

Gene2 NameOfGene2
Gene6 NameOfGene6

Gene3 NameOfGene3
Gene4 NameOfGene4

我希望R通过查看此list_of_data从gnames中找到所有基因的名称。

> head(gnames)
[1] "ZZ_FGCZCont0025" "ZZ_FGCZCont0099" "ZZ_FGCZCont0126" "ZZ_FGCZCont0146"
[5] "AT1G19570"       "ZZ_FGCZCont0158"


> head(gdata) ## edited, too big.
[[1]]
                  X
3   ZZ_FGCZCont0025
4   ZZ_FGCZCont0099
5   ZZ_FGCZCont0126
6   ZZ_FGCZCont0146
7       AT1G19570.1
8   ZZ_FGCZCont0158
9       AT5G38480.1
10  ZZ_FGCZCont0050
X.8
3                                                                                                                                                                                     gi|1346343|sp|P04264| K2C1_HUMAN KERATIN, TYPE II CYTOSKELETAL 1 (CYTO 
4                                                                                                                                                                                                                                             sp|K1C9_HUMAN| 
5                                                                                                                                                                                     gi|71528|pir|| KRHU0 keratin 10, type I, cytoskeletal (clone lambda-KH 
6                                                                                                                                                                                                                                             sp|K22E_HUMAN| 
7                                                                                                                                                     | Symbols: DHAR1, ATDHAR1, DHAR5 | dehydroascorbate reductase | chr1:6773462-6774413 REVERSE LENGTH=213
8                                                                                                                                                                                     gi|88041|pir||A31994 keratin 10, type I, epidermal - human gi|623409 ( 
9                                                                                                                                                             | Symbols: GRF3, RCI1 | general regulatory factor 3 | chr5:15410277-15411285 FORWARD LENGTH=255
10                                                                                                                                                                                    gi|71536|pir|| KRHU2 keratin, 67K type II cytoskeletal - human (fragme 

1 个答案:

答案 0 :(得分:2)

尝试:

lapply(gdata, function(x)x[x[,1] %in% gnames, 2]) 

我测试了以下数据:

set.seed(123)
gnames <- sample(LETTERS, 10)
num.rows <- sample(10:12)
gdata <- lapply(num.rows, function(i)data.frame(X    = sample(LETTERS, i),
                                                Name = sample(LETTERS, i)))

请注意,您的代码可以通过更好的方式存储gdata而受益匪浅。根据您的示例数据,似乎代码名为XX.8:您应该使用更有意义的名称并在代码中使用它们,而不必假设哪些列索引包含哪些数据(您强制使用)我使用1代替"Gene"2代替"GeneName"。)您还可以设想gnames使用Gene生成一个data.frame }列,这样您就可以依靠merge来完成您正在寻找的工作。