R idősebbeknek és halandóknak

Sokan írtak nekünk mostanában hogy elveszve érzik magukat az R nyelv elsajátítása során. Sajnos hiány van a kezdők számára íródott és a könyvek/tutorialok és a “magasabb” szintű irodalom között. Ezen a legtöbben úgy lépnek túl hogy mire túljutnak a bevezető műveken már szert tesznek pár ismerősre, bekapcsolódnak a nyelv köré szerveződött közösség életébe és másoktól sajátítja el a szükséges ismereteket. Hazánkban sajnos ez nem megy olyan könnyen, ezért most pár tippet adunk arra miként induljon el a kedves olvasó.

Hogy mi merre miért, azt a R, de miért is használjam I. és II. posztokban már elmondtuk. Tegyük fel hogy Valószínűség, statisztika és nyelvben felsorolt művek közül valamelyiken, vagy hasonló mélységű anyagokon már sikeresen végigment az olvasó. A nagy kérdés az hogyan is néz ki a worflow, hogyan dolgozunk akkor az R-rel. Mielőtt a lényegre térek, egy kis filozófiai eszmefuttatás következik amit nyugodtan kihagyhatsz.
Bo Cowgill sokat idézett mondása összegzi legjobban az R-t: “The best thing about R is that it was developed by statisticians. The worst thing about R is that… it was developed by statisticians.” Mindenki fel tudja mondani a leckét, bizony nagy cégek is, mint pl. Google, Facebook stb. is használják az R-t, tehát komolyan kell venni. Ez igaz, de sokkal fontosabb kérdés hogy hogyan és mire használják. Mint számítógépes statisztikai nyelv bizonyos dolgokra van kihegyezve; spéci adatkezelés (pl. a vektor mint fő adatstruktúra), numerikus módszerek (igaz gyakran C/FORTRAN könyvtárakat wrapper-rel), grafika (vagy plotting). A statisztikai elemzésnek eszköze a programozási nyelv, a lényege annyi hogy a táblázatkezelőkkel vagy pl. az SPSS-sel ellenben sokkal rugalmasabb, jobban alakítható a problémához, gyorsabban frissül és a közösségnek köszönhetően remek támogatást is kapunk hozzá (ha jól tudunk kérdezni). A használati mód eredménye viszont hogy a munka “végterméke” gyakran ún. spagetti kód (Spaghetti code), ami annyit tesz hogy sokkal inkább ad hoc módon összedobott, egy-egy egyedi problémára koncentráló, nem optimalizált barkács mű. Szerintem ez nem baj, de ha komolyan akarjuk venni magunkat túl kell ezen lépnünk.
A kutatás, akár alkalmazott, akár elméleti, egyik lényeges eleme hogy megismételhető legyen. Habár gyakran egy egyedi problémát oldunk meg (pl. egyszerű regresszióval megtippelünk egy jövőbeli értéket), a tudományos vizsgálódás általános törvényszerűségeket, tendenciákat igyekszik felfedni és magyarázni. A kísérletek és mérések eredményei mögé szeretne látni a kutató, s mindezt szeretné kommunikálni (a nagyvilágnak, egy nagy impaktfaktorú periodikában, vagy a főnökei felé). Első körben az a legegyszerűbb ha ezekre koncentrálunk.
Workflow
  • ProjectTemplate – ez a kis könyvtár segít struktúrát adni adatelemzés projektjeidnek. Egy jó kutatás jól szervezett! Egy bevezető kurzuson, vagy egy intro könyvet feldolgozva még elmegy hogy egy könyvtárban legyenek az adataid és a kódod, de egy komoly elemzéshez ez már nem jó út. A ProjectTemplate leveszi a válladról annak terhét hogy magad tervezd meg a projekted könyvtárszerkezetét.
  • git és github – a verziókövetés is a projekt része, meg kell tanulni az alapokat. Persze ez csak mégy egy játékos amivel bonyolítod az életed, de érdemes rászánni az időt. A github akkor jön jól igazán ha másokkal dolgozol együtt egy feladaton.
  • Adatgondozás – külön feladat, de ahogy egyre komolyabb dolgokkal foglalkozz úgy válik egyre fontosabbá hogy jók legyenek az adataid és jól legyenek tárolva/feldolgozva. A blogon nem rég ajánlottuk a Natural Language Annotation for Machine Learning könyvet, más pedig tudtommal nincs a témában
Adatok
Igen, ha még nem volt elég, most még külön pontot is kap. Meg kell tanulnod hogyan tudsz dolgozni az adatokkal. Itt sincs sok lehetőség, Phil Spector Data Manipulation with R könyve igazítja el az érdeklődő gyerekeket. Van ezer meg egy tutorial, de azt kezdő nem nagyon értheti sajnos.
Prezentálás
  • Sweave – Ugye ismered a LaTeX-et? Ha nem, Dávid írásai itt és itt eligazítanak téged. A Sweave segít abban hogy a kódod és a készülő írásod (no meg prezentációd) “együtt legyen”, a kódrészletek és ábrák szépen jelenjenek meg a szövegben stb. stb. Ezt tényleg nem olvasni, hanem csinálni kell.
  • ggplot2 – Meg kell valahogy jeleníteni az adatainkat, erre tök jók az alap plot függvények, de lássuk be esztétikailag kihívásokkal küszködnek és nem elég flexibilisek. A ggplot2 segítségével szép és jó grafikonokat, ábrákat készíthetünűk. A ggplot2 a The Grammar of Graphics könyvön alapul, de először inkább talán érdemes a ggplot2: Elegant Graphics for Data Analysis-t elolvasni.
Programozás
  • SciViews – remek test framework-öt alkottak az R-hez
  • RUnit – kicsi, egyszerű unit test framework. Nekem különös kedvencem, mivel egy dologra koncentrál és azt el is végzi. Egy kis guglizással jó tutorialokat lehet találni. Maga a tesztelés nem áll távol a tudományos tevékenységtől, a filozófiailag járatosabb olvasóknak kvázi alkalmazott popperiánus falszifikációként jellemezhetem a folyamatot.
  • Software for data Analysis: Programming with R – sajnos nagyon kevés könyv teszi rendben az alapokat az R körül. Hogy lehet hogy az R funkcionális de, vannak benne objektumok, imperatív stílusú iteratív kontroll, S3/S4 object system és egyéb nyalánkságok. Ezek előbb vagy utóbb releváns kérdésekké válnak az R-t tanulók számára, ez a kötet képes egyedül kielégítően megválaszolni ezeket.

Az említett könyvek megvásárolhatóak a Számítógépes nyelvészet könyvespolcon.

Via: R idősebbeknek és halandóknak

430 Responses to R idősebbeknek és halandóknak

  1. Pingback: Buy cheap viagra online uk

  2. Pingback: cialis from india

  3. Pingback: cialis otc

  4. Pingback: cialis 10mg

  5. Pingback: cialis 20mg price

  6. Pingback: Viagra approved

  7. Pingback: Buy viagra on internet

  8. Pingback: buy generic cialis online

  9. Pingback: cheap cialis online

  10. Pingback: cialis 10mg

  11. Pingback: cialis coupon cvs

  12. Pingback: viagra 50mg

  13. Pingback: online pharmacy viagra

  14. Pingback: viagra for sale

  15. Pingback: cheap erectile dysfunction pills online

  16. Pingback: cheapest ed pills online

  17. Pingback: ed medications

  18. Pingback: online pharmacy

  19. Pingback: cialis online

  20. Pingback: levitra 10 mg

  21. Pingback: levitra 10 mg

  22. Pingback: vardenafil usa

  23. Pingback: online casinos for usa players

  24. Pingback: casino online games

  25. Pingback: buy cheap viagra

  26. Pingback: casino real money

  27. Pingback: best online casinos that payout

  28. Pingback: generic cialis 20mg

  29. Pingback: pay day loans

  30. Pingback: personal loan

  31. Pingback: instant loans

  32. Pingback: viagra cost

  33. Pingback: best real money online casinos

  34. Pingback: online casino real money usa

  35. Pingback: new cialis

  36. Pingback: play slot machines games online

  37. Pingback: play slot machines online for real money

  38. Pingback: CafeCasino

  39. Pingback: cialis to buy

  40. Pingback: cialis generic

  41. Pingback: generic for cialis

  42. Pingback: generic cialis

  43. Pingback: gambling casino

  44. Pingback: play for real online casino games

  45. Pingback: real money casino

  46. Pingback: best online casino real money

  47. Pingback: viagra online usa

  48. Pingback: viagra alternative

  49. Pingback: free viagra

  50. Pingback: generic cialis tadalafil

  51. Pingback: buy tadalafil

  52. Pingback: cialis online

  53. Pingback: cialis online reviews

  54. Pingback: slot machines

  55. Pingback: online casino gambling

  56. Pingback: tadalafil best price india

  57. Pingback: Viagra 25 mg without a doctor prescription

  58. Pingback: Viagra 130 mg for sale

  59. Pingback: where to buy Viagra 50 mg

  60. Pingback: where to buy Viagra 200 mg

  61. Pingback: cialis online

  62. Pingback: how to buy Viagra 50 mg

  63. Pingback: Cialis 20 mg without a doctor prescription

  64. Pingback: generic viagra cost

  65. Pingback: viagra cheap

  66. Pingback: canadian pharmacy viagra

  67. Pingback: viagra online

  68. Pingback: generic viagra cost

  69. Pingback: order amoxicillin 500mg

  70. Pingback: viagra history

  71. Pingback: generic cialis in uk

  72. Pingback: the most trusted viagra sites

  73. Pingback: shelf life of cialis

  74. Pingback: Premarin 0,625mg australia

  75. Pingback: cialis super active review

  76. Pingback: generic viagra suppliers

  77. Pingback: casodex pharmacy

  78. Pingback: catapres 100mcg prices

  79. Pingback: ceclor pharmacy

  80. Pingback: ceftin 125mg generic

  81. Pingback: celebrex cheap

  82. Pingback: celexa 20mg canada

  83. Pingback: cephalexin 500 mg united kingdom

  84. Pingback: cipro 500 mg australia

  85. Pingback: claritin 10mg generic

  86. Pingback: hollywood casino online

  87. Pingback: hollywood casino online

  88. Pingback: big fish casino online

  89. Pingback: online casino real money us

  90. Pingback: casino game

  91. Pingback: real money online casino

  92. Pingback: hollywood casino

  93. Pingback: best real casino online

  94. Pingback: online slots real money

  95. Pingback: doubleu casino

  96. Pingback: progressive car insurance quotes

  97. Pingback: car insurance usaa

  98. Pingback: cheapest place to buy viagra

  99. Pingback: automobile insurance quotes florida

  100. Pingback: car insurance quotes for young drivers

  101. Pingback: met life auto and home

  102. Pingback: usaa car insurance quotes

  103. Pingback: best car insurance quotes comparison site

  104. Pingback: car insurance quotes now

  105. Pingback: geico car insurance

  106. Pingback: safecar insurance

  107. Pingback: cash personal loans

  108. Pingback: payday loans loan

  109. Pingback: Real viagra without prescription

  110. Pingback: where can i buy viagra online

  111. Pingback: online payday loans in texas

  112. Pingback: 24 hour installment loans

  113. Pingback: no credit check quick loans

  114. Pingback: bad credit loans with no credit check

  115. Pingback: payday loans online

  116. Pingback: safe online personal loans

  117. Pingback: best cbd oil for pain reviews

  118. Pingback: best cbd oil for cancer treatment

  119. Pingback: where to buy cbd oil online

  120. Pingback: us viagra online

  121. Pingback: viagra no script

  122. Pingback: dosage of cbd oil for chronic pain

  123. Pingback: canadian online pharmacy generic viagra

  124. Pingback: can cbd oil help with pain?

  125. Pingback: cbd oil benefits and uses

  126. Pingback: viagra discount prices

  127. Pingback: cbd oil for dogs

  128. Pingback: ordering viagra from india

  129. Pingback: cannabidioloilsale.com

  130. Pingback: cannabis high in cbd lacey

  131. Pingback: viagra from canada

  132. Pingback: essays

  133. Pingback: real viagra pills

  134. Pingback: write essay for me

  135. Pingback: write an essay

  136. Pingback: homework for pre k

  137. Pingback: third grade homework

  138. Pingback: genuine viagra pills

  139. Pingback: buying essays online

  140. Pingback: is homework helpful

  141. Pingback: should schools have homework

  142. Pingback: write my paper

  143. Pingback: english essay writer

  144. Pingback: cleocin 150 mg cheap

  145. Pingback: australia viagra cost

  146. Pingback: Viagra original pfizer order

  147. Pingback: cheap clomid

  148. Pingback: order clonidine 0,1 mg

  149. Pingback: clozaril 100 mg online

  150. Pingback: Best prices on viagra

  151. Pingback: colchicine 0,5mg usa

  152. Pingback: buy cialis bangkok

  153. Pingback: symbicort inhaler no prescription

  154. Pingback: cost of combivent 50/20mcg

  155. Pingback: where to buy coreg

  156. Pingback: cialis online

  157. Pingback: compazine usa

  158. Pingback: coumadin uk

  159. Pingback: generic viagra made in india

  160. Pingback: researchpaperssfk.com

  161. Pingback: order cozaar

  162. Pingback: Buy viagra no prescription

  163. Pingback: https://customessaywriterbyz.com

  164. Pingback: examples of dissertation proposals

  165. Pingback: crestor 20 mg uk

  166. Pingback: essays on the movie the help

  167. Pingback: cymbalta 30mg tablets

  168. Pingback: college essay review services

  169. Pingback: Buy viagra without rx

  170. Pingback: writing the thesis

  171. Pingback: find someone to write my paper

  172. Pingback: dapsone caps otc

  173. Pingback: thesis statement for research paper

  174. Pingback: ddavp prices

  175. Pingback: depakote pharmacy

  176. Pingback: where can i buy diamox 250 mg

  177. Pingback: cheapest differin

  178. Pingback: diltiazem 30 mg united kingdom

  179. Pingback: doxycycline 100mg otc

  180. Pingback: dramamine pharmacy

  181. Pingback: buy elavil

  182. Pingback: erythromycin for sale

  183. Pingback: etodolac without a doctor prescription

  184. Pingback: flomax uk

  185. Pingback: flonase nasal spray 50 mcg generic

  186. Pingback: cheap garcinia cambogia 100caps

  187. Pingback: buy geodon

  188. Pingback: college essay writer

  189. Pingback: hyzaar tablets

  190. Pingback: cialis price

  191. Pingback: buy cialis online

  192. Pingback: cheap imdur 60 mg

  193. Pingback: cialis side effects

  194. Pingback: buy generic cialis

  195. Pingback: imitrex 50 mg for sale

  196. Pingback: imodium nz

  197. Pingback: active ingredient in viagra

  198. Pingback: women viagra

  199. Pingback: try this

  200. Pingback: womens viagra

  201. Pingback: Web Site

  202. Pingback: where can i buy imuran 25mg

  203. Pingback: indocin no prescription

  204. Pingback: lamisil 250mg generic

  205. Pingback: levaquin for sale

  206. Pingback: lopid 300mg australia

  207. Pingback: lopressor 100mg online pharmacy

  208. Pingback: luvox 50mg australia

  209. Pingback: macrobid 50mg tablet

  210. Pingback: what is viagra jelly

  211. Pingback: cheapest meclizine

  212. Pingback: prescription discount

  213. Pingback: mestinon over the counter

  214. Pingback: online canadian pharmacy

  215. Pingback: micardis online pharmacy

  216. Pingback: canadian drugs without prescription

  217. Pingback: Cleocin

  218. Pingback: mobic medication

  219. Pingback: motrin 200mg pills

  220. Pingback: discount pharmacies

  221. Pingback: viagra sydney

  222. Pingback: nortriptyline medication

  223. Pingback: cheapest periactin

  224. Pingback: order phenergan 25 mg

  225. Pingback: buy plaquenil

  226. Pingback: prednisolone 40mg cheap

  227. Pingback: prevacid 15 mg cheap

  228. Pingback: prilosec 20 mg united kingdom

  229. Pingback: how to buy proair inhaler

  230. Pingback: procardia australia

  231. Pingback: proscar 5 mg purchase

  232. Pingback: viagra for sale over counter

  233. Pingback: order protonix 20mg

  234. Pingback: provigil pills

  235. Pingback: pulmicort 100mcg price

  236. Pingback: pyridium australia

  237. Pingback: reglan without a doctor prescription

  238. Pingback: remeron 30 mg over the counter

  239. Pingback: retin-a cream price

  240. Pingback: revatio cost

  241. Pingback: risperdal cost

  242. Pingback: buy robaxin

  243. Pingback: rogaine 5% pills

  244. Pingback: seroquel 50 mg tablets

  245. Pingback: singulair 4 mg usa

  246. Pingback: skelaxin pharmacy

  247. Pingback: spiriva tablets

  248. Pingback: where can i buy tenormin

  249. Pingback: thorazine pharmacy

  250. Pingback: toprol canada

  251. Pingback: tricor 200mg without a prescription

  252. Pingback: valtrex coupon

  253. Pingback: vantin otc

  254. Pingback: verapamil 120 mg uk

  255. Pingback: voltaren usa

  256. Pingback: where can i buy wellbutrin 300mg

  257. Pingback: best site to buy cialis and viagra

  258. Pingback: zanaflex 4mg tablet

  259. Pingback: zestril 10mg without prescription

  260. Pingback: useful site

  261. Pingback: you could try here

  262. Pingback: zocor tablet

  263. Pingback: zovirax 400mg pills

  264. Pingback: viagra line

  265. Pingback: zyloprim australia

  266. Pingback: zyprexa over the counter

  267. Pingback: how to buy zyvox 600 mg

  268. Pingback: buy sildenafil

  269. Pingback: tadalafil usa

  270. Pingback: furosemide 40mg price

  271. Pingback: escitalopram without a doctor prescription

  272. Pingback: aripiprazole 10 mg cheap

  273. Pingback: how to purchase pioglitazone 15mg

  274. Pingback: spironolactone 100mg medication

  275. Pingback: cheap fexofenadine 180 mg

  276. Pingback: where can i buy glimepiride 2mg

  277. Pingback: meclizine generic

  278. Pingback: leflunomide tablets

  279. Pingback: atomoxetine no prescription

  280. Pingback: donepezil 5mg united states

  281. Pingback: anastrozole 1mg online

  282. Pingback: irbesartan without a doctor prescription

  283. Pingback: dutasteride medication

  284. Pingback: olmesartan purchase

  285. Pingback: buspirone 5mg pharmacy

  286. Pingback: order clonidinemg

  287. Pingback: cefuroxime 500 mg without a doctor prescription

  288. Pingback: celecoxib online pharmacy

  289. Pingback: cheep cialis

  290. Pingback: citalopram no prescription

  291. Pingback: cephalexin 500 mg usa

  292. Pingback: cialis dapoxetine

  293. Pingback: ciprofloxacin 250 mg tablet

  294. Pingback: original cialis uk

  295. Pingback: loratadine 10 mg for sale

  296. Pingback: order clindamycin 150 mg

  297. Pingback: best generic viagra brand

  298. Pingback: clozapine no prescription

  299. Pingback: prochlorperazine 5 mg online pharmacy

  300. Pingback: carvedilol usa

  301. Pingback: warfarin 2 mg prices

  302. Pingback: cialis nex day delivery uk

  303. Pingback: rosuvastatin pills

  304. Pingback: desmopressin cheap

  305. Pingback: divalproex 125 mg purchase

  306. Pingback: trazodone tablets

  307. Pingback: buy tolterodine 2mg

  308. Pingback: online viagra

  309. Pingback: how to purchase acetazolamide

  310. Pingback: cialis price at walmart

  311. Pingback: fluconazole united states

  312. Pingback: phenytoin 100 mg without a prescription

  313. Pingback: oxybutynin 2.5mg cost

  314. Pingback: doxycycline purchase

  315. Pingback: where can i buy viagra for women

  316. Pingback: bisacodyl over the counter

  317. Pingback: venlafaxine nz

  318. Pingback: amitriptyline usa

  319. Pingback: cialis free trial printable coupon

  320. Pingback: permethrin prices

  321. Pingback: 141genericExare

  322. Pingback: erythromycin 500mg online

  323. Pingback: nlecemlj

  324. Pingback: estradiol cost

  325. Pingback: tamsulosin 0.4 mg coupon

  326. Pingback: fluticasone mcg pharmacy

  327. Pingback: how much does cialis cost in australia?

  328. Pingback: sildenafil waar kopen

  329. Pingback: nitrofurantoin 100mg without prescription

  330. Pingback: what class of drugs is ivermectin

  331. Pingback: glipizide 10 mg online

  332. Pingback: buy 100mg viagra tablets

  333. Pingback: hydrochlorothiazide 10 mg over the counter

  334. Pingback: isosorbide tablets

  335. Pingback: sumatriptan 50 mg pharmacy

  336. Pingback: cialis oxycontin interaction

  337. Pingback: cheap loperamide

  338. Pingback: cialis 5 mg

  339. Pingback: azathioprine 50mg pills

  340. Pingback: propranolol 80 mg cheap

  341. Pingback: buy viagra canadian pharmacy

  342. Pingback: where can i buy lamotrigine 50 mg

  343. Pingback: terbinafine 250mg online

  344. Pingback: levofloxacin no prescription

  345. Pingback: levothyroxine mcg united states

  346. Pingback: augmentin 500 mg 125 mg

  347. Pingback: buy augmentin 875 mg online

  348. Pingback: furosemide 12.5 mg without prescription

  349. Pingback: lasix buy

  350. Pingback: buy zithromax online with mastercard

  351. Pingback: zithromax online australia

  352. Pingback: ivermectin virus

  353. Pingback: atorvastatin canada

  354. Pingback: generic name for ivermectin

  355. Pingback: buy ventolin over the counter nz

  356. Pingback: gemfibrozil 300 mg cheap

  357. Pingback: metoprolol online

  358. Pingback: clotrimazole cheap

  359. Pingback: doxycycline for diverticulitis

  360. Pingback: doxycycline renal dosing

  361. Pingback: prednisolone suppository

  362. Pingback: prednisolone toddler dosage

  363. Pingback: clomid and estradiol

  364. Pingback: buy priligy 30mg

  365. Pingback: priligy review forums

  366. Pingback: diflucan lexapro

  367. Pingback: diflucan effectiveness

  368. Pingback: not taking synthroid

  369. Pingback: cheapest metoclopramide

  370. Pingback: buy college essays

  371. Pingback: online thesis help

  372. Pingback: law school essay editing service

  373. Pingback: dissertation methodology example

  374. Pingback: thesis coaching

  375. Pingback: essay writers canada

  376. Pingback: best mba essay editing service

  377. Pingback: writing dissertation service

  378. Pingback: get propecia

  379. Pingback: buy voucher for cialis daily online

  380. Pingback: neurontin metabolism

  381. Pingback: metformin cream

  382. Pingback: paxil withdrawal

  383. Pingback: paxil generic names

  384. Pingback: plaquenil for

  385. Pingback: plaquenil and azithromycin

  386. Pingback: canadian pharmacy uk delivery

  387. Pingback: canadian pharmacy no prescription cialis

  388. Pingback: blue sky peptide tadalafil

  389. Pingback: Biltricide

  390. Pingback: cialis without prescriptions canada

  391. Pingback: il levitra ritarda l'eiaculazione

  392. Pingback: furosemide 40 mg pill

  393. Pingback: Capoten

  394. Pingback: how to buy cialis online uk

  395. Pingback: Zakhar Berkut hd

  396. Pingback: shoppers drug mart canada

  397. Pingback: cheap tablet cialis

  398. Pingback: 4569987

  399. Pingback: overnight pharmacy 4u cialis

  400. Pingback: cialis 5mg tablet

  401. Pingback: buy cheap overnight

  402. Pingback: news news news

  403. Pingback: faxless payday loans pittsburg

  404. Pingback: psy

  405. Pingback: psy2022

  406. Pingback: projectio-freid

  407. Pingback: cialis and retinitis pigmentosa

  408. Pingback: is viagra an opiate

  409. Pingback: advance cash turlock

  410. Pingback: viagra sobe a pressão arterial

  411. Pingback: kinoteatrzarya.ru

  412. Pingback: topvideos

  413. Pingback: video

  414. Pingback: can you buy viagra over the counter

  415. Pingback: for daily use

  416. Pingback: for daily use

  417. Pingback: afisha-kinoteatrov.ru

  418. Pingback: Ukrainskie-serialy

  419. Pingback: site

  420. Pingback: cialis time of onset

  421. Pingback: generic cialis 2018 usa

  422. Pingback: buy generic ativan online

  423. Pingback: top

  424. Pingback: canada drug pharmacy review

  425. Pingback: rx plus pharmacy glendale ny

  426. Pingback: cialis super active 20 mg

  427. Pingback: discount pharmacy in canada

  428. Pingback: cialis without a pescripton

  429. Pingback: soderzhanki-3-sezon-2021.online

  430. Pingback: cytotmeds.com

Comments are closed.