/R/fb_genetic.R

http://fb-scraping-project.googlecode.com/ · R · 62 lines · 61 code · 1 blank · 0 comment · 6 complexity · 2c160a6cea52a36714798c2c85b3f721 MD5 · raw file

  1. fb_genetic <- function(idFB = NA, Genus = NA, Species = NA, server = 'http://www.fishbase.tw/')
  2. {
  3. require("XML")
  4. require("stringr")
  5. require('RCurl')
  6. if (is.na(idFB))
  7. {
  8. ids <- fb_ids(Genus=Genus, Species=Species, server = server)
  9. idFB <- ids$idFB
  10. StockCode <- ids$StockCode
  11. }
  12. if ((is.na(idFB)) & (is.na(Genus) | is.na(Species)))
  13. {
  14. warning("idFB or Genus and Specie are required!")
  15. }
  16. if(!is.na(idFB))
  17. {
  18. url <- paste(server, "Genetics/FishGeneticsList.php?ID=", idFB, sep = "")
  19. s <- readHTMLTable(url, as.data.frame=TRUE, colnames = c('idFB', 'Genus',
  20. 'Species', 'Locality', 'Country', 'HaploidGam',
  21. 'Diploid_zyg','GenMarkers', 'Reference'))
  22. if (dim(s[[4]])[1]==2)
  23. {
  24. list <- c(as.character(idFB), as.character(Genus),
  25. as.character(Species), t(rep(NA, 7)))
  26. names(list) <- c('idFB', 'Genus', 'Species', 'Locality', 'Country', 'HaploidGam',
  27. 'DiploidZygI','DiploidZygII','GenMarkers', 'Reference')
  28. }
  29. if (dim(s[[4]])[1]>=3)
  30. {
  31. diet <- cbind(as.character(idFB), as.character(Genus), as.character(Species),
  32. s[[4]])
  33. names(diet) <- c('idFB', 'Genus', 'Species', 'Locality', 'Country', 'HaploidGam',
  34. 'Diploid_zyg','GenMarkers', 'Reference')
  35. diet$idFB <- as.character(diet$idFB)
  36. diet$Genus <- as.character(diet$Genus)
  37. diet$Species <- as.character(diet$Species)
  38. diet$Locality <- as.character(diet$Locality)
  39. diet$Country <- as.character(diet$Country)
  40. diet$HaploidGam <- as.character(diet$HaploidGam)
  41. diet$Diploid_zyg <- str_split(as.character(diet$Diploid_zyg), '-')
  42. diet$GenMarkers <- as.character(diet$GenMarkers)
  43. diet$Reference <- as.character(diet$Reference)
  44. diet <- diet[-(1:2),]
  45. diet$DiploidZygI <- NA
  46. diet$DiploidZygII <- NA
  47. for (i in 1:length(diet$Diploid_zyg))
  48. {
  49. diet$DiploidZygI[i] <- diet$Diploid_zyg[[i]][1]
  50. diet$DiploidZygII[i] <- diet$Diploid_zyg[[i]][2]
  51. }
  52. diet <- diet[,-7]
  53. list <- as.data.frame(cbind(diet$idFB, diet$Genus, diet$Species, diet$Locality, diet$Country,
  54. diet$HaploidGam, diet$DiploidZygI, diet$DiploidZygII,
  55. diet$GenMarkers, diet$Reference))
  56. names(list) <- c('idFB', 'Genus', 'Species', 'Locality', 'Country', 'HaploidGam',
  57. 'DiploidZygI','DiploidZygII','GenMarkers', 'Reference')
  58. }
  59. }
  60. return(list)
  61. }