У меня на локальном диске более 900 папок, и каждая папка имеет один файл с расширением .dat. Я хочу перебрать каждую папку, чтобы получить доступ к файлу в ней, чтобы получить только определенные данные и записать эти данные в новый файл. Каждый файл .dat выглядит примерно так:
Authors:
# Pallavi Subhraveti
# Quang Ong
# Tim Holland
# Anamika Kothari
# Ingrid Keseler
# Ron Caspi
# Peter D Karp
# Please see the license agreement regarding the use of and distribution of
this file.
# The format of this file is defined at http://bioinformatics.ai.sri.com
# Version: 21.5
# File Name: compounds.dat
# Date and time generated: October 24, 2017, 14:52:45
# Attributes:
# UNIQUE-ID
# TYPES
# COMMON-NAME
# ABBREV-NAME
# ACCESSION-1
# ANTICODON
# ATOM-CHARGES
# ATOM-ISOTOPES
# CATALYZES
# CFG-ICON-COLOR
# CHEMICAL-FORMULA
# CITATIONS
# CODONS
# COFACTORS-OF
# MOLECULAR-WEIGHT
# MONOISOTOPIC-MW
[Data Chunk 1]
UNIQUE-ID - CPD0-1108
TYPES - D-Ribofuranose
COMMON-NAME - β-D-ribofuranose
ATOM-CHARGES - (9 -1)
ATOM-CHARGES - (6 1)
CHEMICAL-FORMULA - (C 5)
CHEMICAL-FORMULA - (H 14)
CHEMICAL-FORMULA - (N 1)
CHEMICAL-FORMULA - (O 6)
CHEMICAL-FORMULA - (P 1)
CREDITS - SRI
CREDITS - kaipa
DBLINKS - (CHEBI "10647" NIL |kothari| 3594051403 NIL NIL)
DBLINKS - (BIGG "37147" NIL |kothari| 3584718837 NIL NIL)
DBLINKS - (PUBCHEM "25200464" NIL |taltman| 3466375284 NIL NIL)
DBLINKS - (LIGAND-CPD "C01233" NIL |keseler| 3342798255 NIL NIL)
INCHI - InChI=1S/C5H14NO6P/c6-1-2-11-13(9,10)12-4-5(8)3-7/h5,7-8H,1-4,6H2,(H,9,10)
MOLECULAR-WEIGHT - 215.142
MONOISOTOPIC-MW - 216.0636987293
NON-STANDARD-INCHI - InChI=1S/C5H14NO6P/c6-1-2-11-13(9,10)12-4-5(8)3-7/h5,7-8H,1-4,6H2,(H,9,10)
SMILES - C(OP([O-])(OCC(CO)O)=O)C[N+]
SYNONYMS - sn-Glycero-3-phosphoethanolamine
SYNONYMS - 1-glycerophosphorylethanolamine\
[Data Chunk 2]
//
UNIQUE-ID - URIDINE
TYPES - Pyrimidine
....
....
В каждом файле примерно 18000 строк (смотрим данные в Notepad++). Теперь я хочу создать новый файл и скопировать из данных только определенные столбцы. Я хочу, чтобы в мой вновь созданный файл копировались только эти столбцы, и файл должен выглядеть так:
UNIQUE-ID TYPES COMMON-NAME CHEMICAL-FORMULA BIGG ID CHEMSPIDER ID CAS ID CHEBI ID PUBCHEM ID MOLECULAR-WEIGHT MONOISOTOPIC-MW
CPD0-1108 D-Ribofuranose β-D-ribofuranose C5H14N1O6P1 37147 NA NA 10647 25200464 215.142 216.0636987293
URIDINE Pyrimidine ...
Каждый фрагмент данных в каждом файле не обязательно содержит информацию для всех нужных мне столбцов, поэтому я упомянул NA для этих столбцов в выходной таблице, которую я хочу. Хотя это совершенно нормально, если я получаю пустые значения в этих столбцах, так как позже я могу работать с этими пробелами отдельно.
Это каталог, в котором есть данные -
File 1] -> C:\Users\robbie\Desktop\Organism_Data\aact1035194-hmpcyc\compounds.dat
File 2] -> C:\Users\robbie\Desktop\Organism_Data\aaph679198-hmpcyc\compounds.dat
File 3] -> C:\Users\robbie\Desktop\Organism_Data\yreg1002368-hmpcyc\compounds.dat
File 4] -> C:\Users\robbie\Desktop\Organism_Data\tden699187-hmpcyc\compounds.dat
...
...
Я действительно склонялся к использованию функции dir
в R, ссылаясь на это сообщение, но я запутался, что вставить в параметр шаблона функции при написании кода, поскольку имена организмов (имена папок) довольно странные и непоследовательные.
Любая помощь для получения требуемого результата приветствуется. Я думал о том, как сделать это в R, но я также готов попробовать это и в python, если я получу хорошие предложения и способы справиться с этим в python. Заранее спасибо за любую помощь!
РЕДАКТИРОВАТЬ: ссылка на данные — данные
recursive
TRUE
, например.dir("C:/Users/robbie/Desktop/Organism_Data/", recursive = TRUE, full.names = TRUE)
- person Tamas Nagy   schedule 11.07.2018