그냥 당신이
x <- readLines("Sample.xml")
x[2] <- "<uniprot>"
doc <- xmlParse(x)
nd <- getNodeSet(doc, "//entry")
nd <- getNodeSet(doc, "//ns:entry", namespaces=c(ns=getDefaultNamespace(doc)[[1]]$uri))
y <- data.frame(id = sapply(nd, xpathSApply, './*[local-name()="name"]', xmlValue),
ec = sapply(nd, function(y) paste(xpathSApply(y, './/*[local-name()="dbReference" and @type="EC"]/@id'), collapse="; ")),
sequence = gsub("\n", "", sapply(nd, xpathSApply, './*[local-name()="sequence"]', xmlValue)))
head(y, 3)
id ec sequence
1 AK1C3_HUMAN 1.-.-.-; 1.1.1.357; 1.1.1.112; 1.1.1.188; 1.1.1.239; 1.1.1.64; 1.3.1.20 MDSKHQCVKLNDGHFMPVLGFGTYAPPEVPRSKALEVTKLAIEA...
2 CP3A4_HUMAN 1.14.13.-; 1.14.13.157; 1.14.13.32; 1.14.13.67; 1.14.13.97 MALIPDLAMETWLLLAVSLVLLYLYGTHSHGLFKKLGIPGPTPL...
3 AK1C1_HUMAN 1.1.1.-; 1.1.1.149; 1.1.1.112; 1.3.1.20 MDSKYQCVKLNDGHFMPVLGFGTYAPAEVPKSKALEATKLAIEA...
또한 네임 스페이스를 삭제하고 이러한 쿼리를 단순화 할 수
...
getNodeSet
에서 필요한 요소를 선택 또는
대신 Uniprot에서 휴식 서비스를 사용
http://www.uniprot.org/uniprot/?query=AK1C3_HUMAN+OR+CP3A4_HUMAN+OR+AK1C1_HUMAN&format=tab&columns=entry%20name,ec,sequence
스타터로 : dbRef를 추출하는 3 가지 방법 예를 들어 unlist (doc [ '* * [local-name() = "dbReference"및 @ type = "EC"]/@ id']); xpathSApply (doc, '// * [local-name() = "dbReference"및 @ type = "EC"]/@ id'); xpathSApply (doc, '* * [local-name() = "dbReference"및 @ type = "EC"]', 함수 (x) xmlAttrs (x) [ 'id'])'. – lukeA
은 모든 EC 번호를 추출하는 데 사용되지만 항목이 속한 항목을 구성하는 방법이 있습니까? – bforcer
첫 번째 항목에 대한 "항목"은 무엇입니까? 예를 들어 저자 및 제목. 더 좋은 방법이 있지만, 그것들을 추출하는 1 가지 방법은'nd
lukeA