#Leeswijzer
Deze handleiding is bedoeld voor iedereen die met het package LSVI zal werken. Ze richt zich zowel op gebruikers die de gegevens uit de databank willen raadplegen maar nooit met R gewerkt hebben als op ervaren R-gebruikers die eigen scripts willen ontwikkelen voor de verwerking van hun veldopnames (berekening van LSVI). Er wordt wel van uitgegaan dat gebruikers een grondige kennis hebben over LSVI van habitattypen (terminologie, achtergrond,…).
De handleiding is zo opgesteld dat ze voor beide groepen de relevante informatie bevat om aan de slag te gaan. Enkele hoofdstukken gaan over de opbouw en het gebruik van het package, en deze zijn zinvol om te lezen voor alle gebruikers:
Voor beginnende R-gebruikers is er onder Gebruik basisfuncties een extra onderdeel Wegwijs in R waarin ingegaan wordt op enkele basishandelingen in R die nuttig kunnen zijn bij het gebruik van dit package (hoe documentatie opzoeken en hoe de bekomen informatie opslaan voor gebruik in Excel).
#Doelstellingen en inhoud package {#doelstellingen_inhoud}
##Inhoud package {#inhoud_package}
Doelstellingen van het package LSVI zijn om de informatie in verband met het bepalen van de lokale staat van instandhouding (LSVI) van habitattypen digitaal ter beschikking te stellen en de functionaliteit aan te bieden om deze LSVI te berekenen (zie Doelstellingen voor details). Het project bestaat uit 2 onderdelen die onlosmakelijk met elkaar verbonden zijn: een databank die de informatie bevat en het package dat beide doelstellingen uitvoert, gebruik makend van de informatie uit de databank.
De databank bevat alle informatie uit de LSVI-rapporten van de habitattypen, waarbij de verschillende versies van de rapporten naast elkaar opgeslagen zijn en dus afzonderlijk geraadpleegd of gebruikt kunnen worden. Behalve de teksten die letterlijk uit de rapporten overgenomen zijn, bevat de databank ook informatie in een vorm die door het package gebruikt kan worden om de informatie op de juiste manier uit de databank te halen of om berekeningen te maken. Zo is voor elke beoordeling van een indicator een opsplitsing gemaakt in ‘voorwaarden’: de elementaire onderdelen die deel uitmaken van deze beoordeling en die herleid kunnen worden tot een statement dat door een computer geëvalueerd kan worden. Vaak zijn deze voorwaarden de onderdelen die in de rapporten gescheiden zijn door ‘en’ en/of ‘of’, soms is de opsplitsing ook gemaakt uit louter technische noodzaak (bv. ‘10% < x < 50%’ wordt vervangen door de voorwaarden ‘x > 10%’ en ‘x < 50%’). Voor elk van deze voorwaarden is gedetailleerde informatie opgenomen over de variabele die nodig is om deze beoordeling te kunnen maken, die enerzijds bedoeld is om de gebruiker te informeren en anderzijds om de LSVI-berekening gemakkelijk te kunnen automatiseren.
De aard (complexiteit) van de informatie in de LSVI-rapporten en de
vereiste om ook als basis te dienen voor de rekenmodule hebben geleid
tot een eerder complexe databankstructuur. We hebben dit opgevangen door
in het package functies voorzien die louter dienen om
de databank te bevragen: met de functies geefVersieInfo()
,
geefInfoHabitatfiche()
, geefSoortenlijst()
en
geefInvoervereisten()
samen kan alle info uit de databank
opgevraagd worden. Ze focussen respectievelijk op informatie over de
versies van de rapporten (geefVersieInfo()
), de letterlijke
info uit de LSVI-rapporten (geefInfoHabitatfiche()
), de
soortenlijsten die aan de habitattypes/indicatoren hangen
(geefSoortenlijst()
) en de info over de voorwaarden die
nodig zijn voor de berekening (geefInvoervereisten()
).
Daarnaast bevat het package enkele functies die deze informatie
meteen in een rapport giet: maakLSVIrapport()
genereert een
rapport waarin de habitatfiches van de geselecteerde gegevens na elkaar
weergegeven worden (inclusief titels), en
maakHabitatfiches()
slaat elke habitatfiche op in een apart
bestand.
Verder bevat het package functies m.b.t. de berekening van de LSVI.
De hoofdfunctie berekenLSVIbasis()
kan door iedereen
gebruikt worden om de LSVI te berekenen op basis van eigen gegevens. De
gebruiker moet wel eerst de gegevens van de veldopnames omzetten naar
het formaat dat beschreven is in de helpfunctie van de functie zelf. Op
termijn zullen er ook functies ontwikkeld worden op maat van een
specifieke databank of project (met bruikbaarheid afhankelijk van de
toegang tot de databank).
Omwille van de complexiteit van de berekening roept berekenLSVIbasis een aantal hulpfuncties op die elk een deel van de controle of berekening uitvoeren. Voor het gemak bij het ontwikkelen zullen deze voorlopig beschikbaar zijn; op termijn zullen omwille van de overzichtelijkheid enkel de functies beschikbaar gesteld blijven die een meerwaarde bieden voor de gebruiker (en relatief gemakkelijk toegepast kunnen worden).
##Doelstellingen {#doelstellingen}
Momenteel bevat het package enkel een basisfunctionaliteit: zoekfuncties om alle onderdelen van de databank weer te geven in een naar ons gevoel logische groepering, en de basisfunctie voor de berekening van de LSVI. Op de planning staan een berekenLSVI-functie voor de verwerking van de fieldmap-gegevens (o.a. opnamen in bossen) en de habitatgegevens van het kwaliteitsmeetnet in INBOVEG, en een rekenmodule voor LSVI-opnamen om de LSVI van Natura 2000-habitattypen toe te voegen aan het platform PAS/DPB.
De doelstelling is om het package op deze manier stap voor stap verder uit te breiden met nieuwe functionaliteiten op vraag van gebruikers, in het kader van projecten, naar aanleiding van nieuwe berekeningswijzen voor de LSVI,… We verwachten hiervoor input van de gebruikers (hoe moet de berekening gebeuren,…). Ook hopen we dat alle scripts die in het kader van de LSVI ontwikkeld worden, uiteindelijk hun weg vinden naar dit package (zie ook de laatste paragraaf van dit onderdeel). Op die manier is er één plaats waar iedereen voor LSVI-informatie en -berekeningen terecht kan, kan iedereen alle eerder ontwikkelde berekeningsmethoden voor de LSVI op zijn/haar gegevens toepassen en vermijden we binnen INBO een wildgroei van berekeningsmethoden met licht afwijkende resultaten.
We testen de functies die we ontwikkelen, maar we zien ook wel eens iets over het hoofd. Het is dus (zeker in het begin) mogelijk dat er nog foutjes in geslopen zijn, dat de functies niet in alle omstandigheden een correct resultaat (of correcte foutmelding) geven, of dat een functie zich ‘irritant’ gedraagt (bv. foutmelding geven als je een hoofdletter ingeeft i.p.v. een kleine letter op een plaats waar dit verschil niet relevant is). Als je deze of andere problemen tegenkomt, meld ze ons dan a.u.b. (en ga er niet van uit dat je collega’s dat doen). Geef dan bij voorkeur het script door waarbij het misloopt (waar van toepassing inclusief de gegevens of een suggestie voor het resultaat), dit helpt ons om het probleem te situeren en aan te pakken. Ook alle andere feedback is trouwens welkom.
Als je zelf een script ontwikkelt dat in aanmerking zou kunnen komen om in het package opgenomen te worden, wees dan collegiaal met je collega’s die later een gelijkaardig script nodig hebben en neem contact op met de beheerder van dit package (‘cre’ in description-file, zie code hieronder). We bekijken dan samen op welke manier je het script kan aanleveren en hoe we eventueel resterende taken verdelen. (Aan het berekenscript wordt bij voorkeur een stukje script toegevoegd dat foutcontrole uitvoert op de argumenten van de functie, en documentatie over wat de functie doet, en er wordt bij voorkeur ook een aparte testfunctie geschreven die nagaat of de functie in verschillende situaties het juiste resultaat geeft. We kunnen dit zelf toevoegen of je hierbij helpen, maar het is handig als we hiervoor wat bijkomende informatie krijgen.) Als bedankje word je uiteraard vermeld in de auteurslijst van het package.
## Package: LSVI
## Title: Rekenmodule Lokale Staat Van Instandhouding van habitattypen
## Version: 0.1.3
## Authors@R: c( person( "Els", "Lommelen", email =
## "[email protected]", comment = c(ORCID =
## "0000-0002-3481-5684"), role = c("aut", "cre")),
## person("Patrik", "Oosterlynck", email =
## "[email protected]", comment = c(ORCID =
## "0000-0002-5712-0770"), role = c("aut")), person("Gert", "Van
## Spaendonk", email = "[email protected]", role =
## c("aut")), person("Hans", "Van Calster", email =
## "[email protected]", comment = c(ORCID =
## "0000-0001-8595-8426"), role = c("aut")), person("Martine",
## "Van Hove", email = "[email protected]", role =
## c("aut")), person("Toon", "Westra", email =
## "[email protected]", comment = c(ORCID =
## "0000-0003-2478-9459"), role = c("aut")), person("An",
## "Leyssen", email = "[email protected]", role = c("ctb")),
## person("Toon", "Spanhove", email = "[email protected]",
## role = c("ctb")), person("Research Institute for Nature and
## Forest (INBO)", email = "[email protected]", role = "cph"))
## Description: Het package LSVI bundelt een aantal functies in verband
## met het ophalen van informatie over en het berekenen van de
## Lokale Staat Van Instandhouding (LSVI) van habitattypes.
## Depends: R (>= 3.5.0)
## License: GPL-3
## LazyData: true
## Encoding: UTF-8
## Imports: assertthat, DBI, plyr, dplyr, lazyeval, methods, odbc, pool,
## readr, rgbif, rlang, rmarkdown, RSQLite, stringr, testthat,
## tibble, tidyr, utils, xtable
## Suggests: knitr
## RoxygenNote: 7.2.3
## VignetteBuilder: knitr
## URL: https://github.com/inbo/LSVI
## BugReports: https://github.com/inbo/LSVI/issues
## Collate: 'berekenLSVIbasis.R' 'berekenStatus.R'
## 'berekenVerschilscores.R' .....
## Config/pak/sysreqs: make libicu-dev libxml2-dev unixodbc-dev libssl-dev
## libx11-dev
## Repository: https://inbo.r-universe.dev
## RemoteUrl: https://github.com/inbo/lsvi
## RemoteRef: HEAD
## RemoteSha: c709f031184818e7348c89d98861e87517b1925e
## Author: Els Lommelen [aut, cre]
## (<https://orcid.org/0000-0002-3481-5684>), Patrik Oosterlynck
## [aut] (<https://orcid.org/0000-0002-5712-0770>), Gert Van
## Spaendonk [aut], Hans Van Calster [aut]
## (<https://orcid.org/0000-0001-8595-8426>), Martine Van Hove
## [aut], Toon Westra [aut]
## (<https://orcid.org/0000-0003-2478-9459>), An Leyssen [ctb],
## Toon Spanhove [ctb], Research Institute for Nature and Forest
## (INBO) [cph]
## Maintainer: Els Lommelen <[email protected]>
## Built: R 4.4.2; ; 2024-11-17 05:41:39 UTC; unix
##
## -- File: /tmp/RtmpkUJopq/Rinst12cb24eaaa4d/LSVI/Meta/package.rds
#Installatie van het package {#installatie_package}
Het package kan als volgt geïnstalleerd worden (altijd eerst R herstarten en deze installatie doen in een sessie waarin nog geen andere packages geladen zijn!):
Een testversie met de nieuwste aanpassingen kan als volgt geïnstalleerd worden:
#Gebruik basisfuncties {#gebruik_basisfuncties}
##Wegwijs in R {#wegwijs_in_R}
(Wat extra uitleg voor diegenen die niet vertrouwd zijn met R.)
###R, RStudio, scripts en projecten
R is de taal die je gebruikt om met je computer te communiceren, RStudio is een programma dat een aantal tools aanbiedt die het je wat gemakkelijker maken: allerhande knoppen waardoor je niet voor elke handeling een commando moet typen, ‘spellingscontrole’ (voor R), een ‘verkenner’ waarin je je mappenstructuur kan raadplegen, een lijst met wat er in het geheugen opgeslagen is,…
De communicatie met je computer gebeurt via de ‘console’. Als je vaak gelijkaardige opdrachten wil geven aan je computer, kan je alle commando’s ingeven in een script en dit opslaan voor later gebruik (aan te maken met het knopje linksboven onder ‘File’). Als je je cursor op een commando in het script zet en ‘Ctrl’-‘ENTER’ drukt, wordt dit commando naar de console gekopieerd en uitgevoerd; bij selectie van meerdere commando’s wordt de volledige selectie uitgevoerd.
Aan te raden is om scripts en eventueel bijhorende gegevens te bundelen in een ‘project’. Dit maak je aan door ‘File > New Project > New Directory > New project’ te kiezen, een naam geven aan je project (‘Directory name’) en een map te selecteren om je project in op te slaan. Enkele voordelen:
Om scripts gemakkelijk te kunnen hergebruiken met andere waarden, kunnen ze in de vorm van functies geschreven worden. Die functies kunnen gebundeld worden in een package en beschikbaar gesteld worden voor alle R-gebruikers.
###Packages en documentatie
Om in R packages te kunnen gebruiken, moeten deze telkens (na elke
herstart van de R-console) eerst ingeladen worden met de functie
library()
. Om de functies in verband met de LSVI te
gebruiken, voer je dus eerst het commando library(LSVI)
in.
Dit kan wel enkel met reeds geïnstalleerde packages, die in het venster
rechtsonder onder de tab Packages vermeld zijn. Andere packages moet je
eerst eenmalig installeren (via de knop Install of het commando
install.packages("naam_nieuw_package")
).
Als je in de lijst met packages onder de tab Packages op een
packagenaam klikt, krijg je de documentatie van het package: eventuele
handleidingen (onder de link
User guides, package vignettes and other documentation
) en
een klikbare lijst met alle functies die in het package beschikbaar
zijn. Dezelfde documentatie is terug te vinden via de bovenste balk op
de website:
handleidingen staan onder Articles en
functies onder Reference.
Zodra een package ingeladen is, kan je deze documentatie van functies
ook opvragen door een ?
te typen, gevolgd door de naam van
de functie, bijvoorbeeld:
Deze documentatie geeft aan wat de functie doet en hoe je de functie moet gebruiken:
library(LSVI)
), kan je deze voorbeelden kopiëren en
uittesten. Door de argumenten aan te passen (of toe te voegen of te
wissen), kan je op een gemakkelijke manier je eigen script maken.(Leeswijzer: info over het gebruik van de functies in het LSVI-package staat onder Basis van LSVI-package. Wat hier volgt, is wat met de gegenereerde gegevens gedaan kan worden. We raden daarom aan om eerst Basis van LSVI-package te lezen.)
###Wat met gegenereerde gegevens in tabelvorm? {#gegs_in_tabelvorm}
Vaak genereert een functie gegevens in de vorm van een tabel. Hoe kan je hier nu mee verdergaan?
We illustreren dit a.d.h.v de functie
geefSoortenlijst()
. Als we deze functie op zich gebruiken
zoals in de documentatie is weergegeven (eerste voorbeeld), dan wordt de
uitvoer weergegeven in de R-console:
library(LSVI)
maakConnectiePool()
geefSoortenlijst(Habitattype = "4030", Taxonlijsttype = "LSVIfiche")
## Versie Habitattype Habitatsubtype TaxongroepId Omschrijving
## 1 Versie 2.0 4030 4030 528 vergrassing/verruiging
## 2 Versie 2.0 4030 4030 528 vergrassing/verruiging
## 3 Versie 2.0 4030 4030 528 vergrassing/verruiging
## 4 Versie 2.0 4030 4030 528 vergrassing/verruiging
## 5 Versie 2.0 4030 4030 528 vergrassing/verruiging
## 6 Versie 2.0 4030 4030 99 dwergstruiken
## 7 Versie 2.0 4030 4030 99 dwergstruiken
## 8 Versie 2.0 4030 4030 99 dwergstruiken
## 9 Versie 2.0 4030 4030 99 dwergstruiken
## 10 Versie 3 4030 4030 100 dwergstruiken
## 11 Versie 3 4030 4030 100 dwergstruiken
## 12 Versie 3 4030 4030 100 dwergstruiken
## 13 Versie 3 4030 4030 100 dwergstruiken
## 14 Versie 3 4030 4030 100 dwergstruiken
## 15 Versie 3 4030 4030 514 vergrassing
## 16 Versie 3 4030 4030 514 vergrassing
## 17 Versie 3 4030 4030 514 vergrassing
## 18 Versie 3 4030 4030 514 vergrassing
## 19 Versie 3 4030 4030 559 verruiging
## 20 Versie 3 4030 4030 559 verruiging
## 21 Versie 3 4030 4030 484 invasief mos
## 22 Versie 2.0 4030 4030 695 sleutelsoorten
## 23 Versie 2.0 4030 4030 695 sleutelsoorten
## 24 Versie 2.0 4030 4030 695 sleutelsoorten
## 25 Versie 2.0 4030 4030 695 sleutelsoorten
## 26 Versie 2.0 4030 4030 695 sleutelsoorten
## 27 Versie 2.0 4030 4030 695 sleutelsoorten
## 28 Versie 2.0 4030 4030 695 sleutelsoorten
## 29 Versie 2.0 4030 4030 695 aanwezigheidstruikhei
## 30 Versie 3 4030 4030 696 sleutelsoorten
## 31 Versie 3 4030 4030 696 sleutelsoorten
## 32 Versie 3 4030 4030 696 sleutelsoorten
## 33 Versie 3 4030 4030 696 sleutelsoorten
## 34 Versie 3 4030 4030 696 sleutelsoorten
## 35 Versie 3 4030 4030 696 sleutelsoorten
## 36 Versie 3 4030 4030 696 sleutelsoorten
## 37 Versie 3 4030 4030 696 sleutelsoorten
## 38 Versie 3 4030 4030 696 sleutelsoorten
## 39 Versie 3 4030 4030 696 sleutelsoorten
## 40 Versie 3 4030 4030 696 aanwezigheidstruikhei
## NbnTaxonVersionKey WetNaam
## 1 NBNSYS0000002031 Pteridium aquilinum (L.) Kuhn
## 2 NBNSYS0000002499 Molinia caerulea (L.) Moench
## 3 NBNSYS0000002623 Deschampsia flexuosa (L.) Trin.
## 4 NBNSYS0000039520 Agrostis
## 5 NBNSYS0000137437 Rubus
## 6 NBNSYS0000003902 Calluna vulgaris (L.) Hull
## 7 NBNSYS0000003903 Erica tetralix L.
## 8 NBNSYS0000003909 Erica cinerea L.
## 9 NBNSYS0000003915 Vaccinium myrtillus L.
## 10 NBNSYS0000003902 Calluna vulgaris (L.) Hull
## 11 NBNSYS0000003903 Erica tetralix L.
## 12 NBNSYS0000003909 Erica cinerea L.
## 13 NBNSYS0000003914 Vaccinium vitis-idaea L.
## 14 NBNSYS0000003915 Vaccinium myrtillus L.
## 15 NBNSYS0000002499 Molinia caerulea (L.) Moench
## 16 NBNSYS0000002623 Deschampsia flexuosa (L.) Trin.
## 17 NBNSYS0000002630 Calamagrostis epigejos (L.) Roth
## 18 NBNSYS0000039520 Agrostis
## 19 NBNSYS0000002031 Pteridium aquilinum (L.) Kuhn
## 20 NBNSYS0000137437 Rubus
## 21 NBNSYS0000036261 Campylopus introflexus (Hedw.) Brid.
## 22 INBSYS0000004851 Diphasiastrum tristachyum (Pursh) Holub
## 23 NBNSYS0000002003 Lycopodium clavatum L.
## 24 NBNSYS0000003207 Genista anglica L.
## 25 NBNSYS0000003208 Genista pilosa L.
## 26 NBNSYS0000003909 Erica cinerea L.
## 27 NBNSYS0000003914 Vaccinium vitis-idaea L.
## 28 NBNSYS0000004030 Cuscuta epithymum (L.) L.
## 29 NBNSYS0000003902 Calluna vulgaris (L.) Hull
## 30 INBSYS0000004426 Potentilla erecta (L.) Räuschel
## 31 INBSYS0000004851 Diphasiastrum tristachyum (Pursh) Holub
## 32 NBNSYS0000002003 Lycopodium clavatum L.
## 33 NBNSYS0000002444 Carex pilulifera L.
## 34 NBNSYS0000002676 Nardus stricta L.
## 35 NBNSYS0000003207 Genista anglica L.
## 36 NBNSYS0000003208 Genista pilosa L.
## 37 NBNSYS0000003909 Erica cinerea L.
## 38 NBNSYS0000004030 Cuscuta epithymum (L.) L.
## 39 NHMSYS0000458768 Festuca filiformis Pourr.
## 40 NBNSYS0000003902 Calluna vulgaris (L.) Hull
## NedNaam WetNaamKort TaxonType
## 1 Adelaarsvaren Pteridium aquilinum Species
## 2 Pijpenstrootje Molinia caerulea Species
## 3 Bochtige smele Deschampsia flexuosa Species
## 4 Struisgras (G) Agrostis Genus
## 5 Braam (G) Rubus Genus
## 6 Struikhei Calluna vulgaris Species
## 7 Gewone dophei Erica tetralix Species
## 8 Rode dophei Erica cinerea Species
## 9 Blauwe bosbes Vaccinium myrtillus Species
## 10 Struikhei Calluna vulgaris Species
## 11 Gewone dophei Erica tetralix Species
## 12 Rode dophei Erica cinerea Species
## 13 Rode bosbes Vaccinium vitis-idaea Species
## 14 Blauwe bosbes Vaccinium myrtillus Species
## 15 Pijpenstrootje Molinia caerulea Species
## 16 Bochtige smele Deschampsia flexuosa Species
## 17 Gewoon struisriet Calamagrostis epigejos Species
## 18 Struisgras (G) Agrostis Genus
## 19 Adelaarsvaren Pteridium aquilinum Species
## 20 Braam (G) Rubus Genus
## 21 Grijs kronkelsteeltje Campylopus introflexus Species
## 22 Kleine wolfsklauw Diphasiastrum tristachyum Species
## 23 Grote wolfsklauw Lycopodium clavatum Species
## 24 Stekelbrem Genista anglica Species
## 25 Kruipbrem Genista pilosa Species
## 26 Rode dophei Erica cinerea Species
## 27 Rode bosbes Vaccinium vitis-idaea Species
## 28 Klein warkruid Cuscuta epithymum Species
## 29 Struikhei Calluna vulgaris Species
## 30 Tormentil Potentilla erecta Species
## 31 Kleine wolfsklauw Diphasiastrum tristachyum Species
## 32 Grote wolfsklauw Lycopodium clavatum Species
## 33 Pilzegge Carex pilulifera Species
## 34 Borstelgras Nardus stricta Species
## 35 Stekelbrem Genista anglica Species
## 36 Kruipbrem Genista pilosa Species
## 37 Rode dophei Erica cinerea Species
## 38 Klein warkruid Cuscuta epithymum Species
## 39 Fijn schapengras Festuca filiformis Species
## 40 Struikhei Calluna vulgaris Species
Omdat de tabel te breed is, wordt deze opgesplitst in 3 delen, die
onder elkaar weergegeven worden. Deze tabel wordt ook enkel weergegeven,
niet opgeslagen, en op deze manier kunnen we er achteraf geen
bewerkingen mee doen. Beter is om de tabel toe te kennen aan een
variabele, we geven hier die variabele de naam
soortenlijst4030
:
Als je dit commando in je eigen console runt, verschijnt deze variabele in het venster rechtsboven onder de tab Environment (dat een overzicht geeft van alle variabelen). Bij tabellen kan je deze variabele bekijken door erop te klikken.
In R kan je deze variabele tonen door de variabelenaam in te typen (dan krijg je dezelfde uitvoer van de tabel in 4 delen). Je kan er ook allerlei bewerkingen mee uitvoeren (sorteren, selecteren,…), maar daarvoor verwijzen we naar een basiscursus van R.
Wat we hier wel tonen, is hoe deze tabel opgeslagen kan worden, zodat
hij achteraf in Excel geopend kan worden. Dit kan met de functie
‘write_csv2()’ uit het package ‘readr’. Om deze tabel met naam
soortenlijst4010.csv
op te slaan in de map R op de
C-schijf, gebruiken we volgende commando’s:
We hebben hier het absolute path (C:/R
) weergegeven, een
andere mogelijkheid is om het path relatief ten opzichte van de ‘working
directory’ weer te geven. Dit is de map waarin je aan ’t werken bent. Je
kan deze working directory zelf bepalen door het commando
setwd("C:/.../mijn_werkmap")
. Als je in een project werkt
waarin je al je scripts opslaat (aan te raden), dan is de root van dit
project automatisch je working directory.
###Hoe eigen gegevens inlezen in R?
Als je eigen gegevens wil inlezen in R, is de eenvoudigste methode om deze in excel op te slaan als ‘csv (gescheiden door lijstscheidingsteken)’ en in de ‘working directory’ te plaatsen (of je kan ook het path specifiëren). Daarna kan je de gegevens als volgt inlezen:
Je steekt dus de gegevens uit je bestand Gegevens.csv
in
de variabele Dataset
. (Het laden van de library readr is
enkel nodig als je dit nog niet eerder gedaan hebt sinds je R opgestart
hebt.)
Gegevens kunnen ook rechtstreeks vanuit een databank ingelezen worden, en ze kunnen in R naar het gewenste formaat omgezet worden. Een volledige uitleg hierover zou ons echter te ver leiden. Toch interesse om hier meer over te leren? Neem dan contact op met een collega van BMK.
###Wat met een list van tabellen?
De functie berekenLSVIbasis()
geeft gegevens terug in de
vorm van een lijst van 4 tabellen.
#Eerst worden wat voorbeeldgegevens opgehaald uit het package:
library(readr)
data_habitat <-
read_csv2(
system.file("vbdata/Opname4030habitat.csv", package = "LSVI"),
col_types = list(col_character(), col_character(), col_character())
)
## ℹ Using "','" as decimal and "'.'" as grouping mark. Use `read_delim()` for more control.
data_voorwaarden <-
read_csv2(
system.file("vbdata/Opname4030voorwaardenv2.csv", package = "LSVI")
)
## ℹ Using "','" as decimal and "'.'" as grouping mark. Use `read_delim()` for more control.
## Rows: 8 Columns: 8
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (8): ID, Criterium, Indicator, Voorwaarde, Waarde, Type, Invoertype, Een...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
data_soorten_kenmerken <-
read_csv2(
system.file("vbdata/Opname4030soortenKenmerken.csv", package = "LSVI")
)
## ℹ Using "','" as decimal and "'.'" as grouping mark. Use `read_delim()` for more control.
## Rows: 13 Columns: 8── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (8): ID, Kenmerk, TypeKenmerk, Waarde, Type, Invoertype, Eenheid, Vegeta...
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
#En hier gebeurt de berekening zelf:
berekenLSVIbasis(
Versie = "Versie 2.0",
Kwaliteitsniveau = "1", data_habitat,
data_voorwaarden, data_soorten_kenmerken
)
## Warning in berekenLSVIbasis(Versie = "Versie 2.0", Kwaliteitsniveau = "1", :
## Volgende records uit Data_voorwaarden kunnen niet gekoppeld worden aan
## indicatoren uit de databank omdat de criterium-indicator-voorwaarde-combinatie
## niet voorkomt bij de LSVI-regels van het opgegeven habitattype: <JR0216,
## Verstoring, invasieve exoten, bedekking invasieve exoten> <Ts2036, Verstoring,
## invasieve exoten, bedekking invasieve exoten>
## $Resultaat_criterium
## # A tibble: 6 × 9
## ID Habitattype Versie Criterium Kwaliteitsniveau Status_criterium
## <chr> <chr> <chr> <chr> <int> <lgl>
## 1 JR0216 4030 Versie 2.0 Structuur 1 FALSE
## 2 JR0216 4030 Versie 2.0 Vegetatie 1 FALSE
## 3 JR0216 4030 Versie 2.0 Verstoring 1 FALSE
## 4 Ts2036 4030 Versie 2.0 Structuur 1 TRUE
## 5 Ts2036 4030 Versie 2.0 Vegetatie 1 FALSE
## 6 Ts2036 4030 Versie 2.0 Verstoring 1 TRUE
## # ℹ 3 more variables: Aggregatiemethode <chr>, Index_min_criterium <dbl>,
## # Index_harm_criterium <dbl>
##
## $Resultaat_indicator
## # A tibble: 10 × 12
## ID Habitattype Versie Habitattype.y Criterium Indicator Beoordeling Belang
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 JR02… 4030 Versi… 4030 Structuur dwergstr… B: >= codo… b
## 2 JR02… 4030 Versi… 4030 Structuur ouderdom… B: 2 tot 3… b
## 3 JR02… 4030 Versi… 4030 Vegetatie sleutels… B: Struikh… b
## 4 JR02… 4030 Versi… 4030 Verstori… verbossi… B: 10-30% b
## 5 JR02… 4030 Versi… 4030 Verstori… vergrass… B: 30-50% zb
## 6 Ts20… 4030 Versi… 4030 Structuur dwergstr… B: >= codo… b
## 7 Ts20… 4030 Versi… 4030 Structuur ouderdom… B: 2 tot 3… b
## 8 Ts20… 4030 Versi… 4030 Vegetatie sleutels… B: Struikh… b
## 9 Ts20… 4030 Versi… 4030 Verstori… verbossi… B: 10-30% b
## 10 Ts20… 4030 Versi… 4030 Verstori… vergrass… B: 30-50% zb
## # ℹ 4 more variables: Kwaliteitsniveau <int>, BeoordelingID <int>,
## # Status_indicator <lgl>, Verschilscore <dbl>
##
## $Resultaat_detail
## # A tibble: 12 × 27
## ID Habitattype kwaliteit van onderzoek s…¹ Versie Habitattype.y Criterium
## <chr> <chr> <chr> <chr> <chr> <chr>
## 1 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Structuur
## 2 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Structuur
## 3 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Vegetatie
## 4 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Vegetatie
## 5 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Verstori…
## 6 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Verstori…
## 7 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Structuur
## 8 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Structuur
## 9 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Vegetatie
## 10 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Vegetatie
## 11 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Verstori…
## 12 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Verstori…
## # ℹ abbreviated name: ¹`kwaliteit van onderzoek sleutelsoorten`
## # ℹ 21 more variables: Indicator <chr>, Beoordeling <chr>,
## # Kwaliteitsniveau <int>, Belang <chr>, BeoordelingID <int>,
## # Combinatie <chr>, VoorwaardeID <int>, Voorwaarde <chr>,
## # Referentiewaarde <chr>, Operator <chr>, EenheidRefwaarde <chr>,
## # TypeRefwaarde <chr>, InvoertypeRevwaarde <chr>, Waarde <chr>,
## # TypeWaarde <chr>, InvoertypeWaarde <chr>, EenheidWaarde <chr>, …
##
## $Resultaat_globaal
## # A tibble: 2 × 9
## ID Habitattype Versie Kwaliteitsniveau Status Aggregatiemethode
## <chr> <chr> <chr> <int> <lgl> <chr>
## 1 JR0216 4030 Versie 2.0 1 FALSE 1-out-all-out
## 2 Ts2036 4030 Versie 2.0 1 FALSE 1-out-all-out
## # ℹ 3 more variables: Index_min_min <dbl>, Index_min_harm <dbl>,
## # Index_harm_harm <dbl>
We gaan weer beginnen met de uitvoer in een variabele (‘resultaat’) te steken om er bewerkingen op te kunnen uitvoeren:
resultaat <-
berekenLSVIbasis(
Versie = "Versie 2.0",
Kwaliteitsniveau = "1", Data_habitat = data_habitat,
Data_voorwaarden = data_voorwaarden,
Data_soortenKenmerken = data_soorten_kenmerken
)
## Warning in berekenLSVIbasis(Versie = "Versie 2.0", Kwaliteitsniveau = "1", :
## Volgende records uit Data_voorwaarden kunnen niet gekoppeld worden aan
## indicatoren uit de databank omdat de criterium-indicator-voorwaarde-combinatie
## niet voorkomt bij de LSVI-regels van het opgegeven habitattype: <JR0216,
## Verstoring, invasieve exoten, bedekking invasieve exoten> <Ts2036, Verstoring,
## invasieve exoten, bedekking invasieve exoten>
Nu kunnen we de afzonderlijke tabellen als volgt uit het object
resultaat
halen (je kan met $
of met
[[]]
werken):
## # A tibble: 2 × 9
## ID Habitattype Versie Kwaliteitsniveau Status Aggregatiemethode
## <chr> <chr> <chr> <int> <lgl> <chr>
## 1 JR0216 4030 Versie 2.0 1 FALSE 1-out-all-out
## 2 Ts2036 4030 Versie 2.0 1 FALSE 1-out-all-out
## # ℹ 3 more variables: Index_min_min <dbl>, Index_min_harm <dbl>,
## # Index_harm_harm <dbl>
## # A tibble: 6 × 9
## ID Habitattype Versie Criterium Kwaliteitsniveau Status_criterium
## <chr> <chr> <chr> <chr> <int> <lgl>
## 1 JR0216 4030 Versie 2.0 Structuur 1 FALSE
## 2 JR0216 4030 Versie 2.0 Vegetatie 1 FALSE
## 3 JR0216 4030 Versie 2.0 Verstoring 1 FALSE
## 4 Ts2036 4030 Versie 2.0 Structuur 1 TRUE
## 5 Ts2036 4030 Versie 2.0 Vegetatie 1 FALSE
## 6 Ts2036 4030 Versie 2.0 Verstoring 1 TRUE
## # ℹ 3 more variables: Aggregatiemethode <chr>, Index_min_criterium <dbl>,
## # Index_harm_criterium <dbl>
## # A tibble: 10 × 12
## ID Habitattype Versie Habitattype.y Criterium Indicator Beoordeling Belang
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 JR02… 4030 Versi… 4030 Structuur dwergstr… B: >= codo… b
## 2 JR02… 4030 Versi… 4030 Structuur ouderdom… B: 2 tot 3… b
## 3 JR02… 4030 Versi… 4030 Vegetatie sleutels… B: Struikh… b
## 4 JR02… 4030 Versi… 4030 Verstori… verbossi… B: 10-30% b
## 5 JR02… 4030 Versi… 4030 Verstori… vergrass… B: 30-50% zb
## 6 Ts20… 4030 Versi… 4030 Structuur dwergstr… B: >= codo… b
## 7 Ts20… 4030 Versi… 4030 Structuur ouderdom… B: 2 tot 3… b
## 8 Ts20… 4030 Versi… 4030 Vegetatie sleutels… B: Struikh… b
## 9 Ts20… 4030 Versi… 4030 Verstori… verbossi… B: 10-30% b
## 10 Ts20… 4030 Versi… 4030 Verstori… vergrass… B: 30-50% zb
## # ℹ 4 more variables: Kwaliteitsniveau <int>, BeoordelingID <int>,
## # Status_indicator <lgl>, Verschilscore <dbl>
## # A tibble: 12 × 27
## ID Habitattype kwaliteit van onderzoek s…¹ Versie Habitattype.y Criterium
## <chr> <chr> <chr> <chr> <chr> <chr>
## 1 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Structuur
## 2 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Structuur
## 3 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Vegetatie
## 4 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Vegetatie
## 5 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Verstori…
## 6 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Verstori…
## 7 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Structuur
## 8 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Structuur
## 9 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Vegetatie
## 10 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Vegetatie
## 11 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Verstori…
## 12 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Verstori…
## # ℹ abbreviated name: ¹`kwaliteit van onderzoek sleutelsoorten`
## # ℹ 21 more variables: Indicator <chr>, Beoordeling <chr>,
## # Kwaliteitsniveau <int>, Belang <chr>, BeoordelingID <int>,
## # Combinatie <chr>, VoorwaardeID <int>, Voorwaarde <chr>,
## # Referentiewaarde <chr>, Operator <chr>, EenheidRefwaarde <chr>,
## # TypeRefwaarde <chr>, InvoertypeRevwaarde <chr>, Waarde <chr>,
## # TypeWaarde <chr>, InvoertypeWaarde <chr>, EenheidWaarde <chr>, …
## # A tibble: 2 × 9
## ID Habitattype Versie Kwaliteitsniveau Status Aggregatiemethode
## <chr> <chr> <chr> <int> <lgl> <chr>
## 1 JR0216 4030 Versie 2.0 1 FALSE 1-out-all-out
## 2 Ts2036 4030 Versie 2.0 1 FALSE 1-out-all-out
## # ℹ 3 more variables: Index_min_min <dbl>, Index_min_harm <dbl>,
## # Index_harm_harm <dbl>
## # A tibble: 6 × 9
## ID Habitattype Versie Criterium Kwaliteitsniveau Status_criterium
## <chr> <chr> <chr> <chr> <int> <lgl>
## 1 JR0216 4030 Versie 2.0 Structuur 1 FALSE
## 2 JR0216 4030 Versie 2.0 Vegetatie 1 FALSE
## 3 JR0216 4030 Versie 2.0 Verstoring 1 FALSE
## 4 Ts2036 4030 Versie 2.0 Structuur 1 TRUE
## 5 Ts2036 4030 Versie 2.0 Vegetatie 1 FALSE
## 6 Ts2036 4030 Versie 2.0 Verstoring 1 TRUE
## # ℹ 3 more variables: Aggregatiemethode <chr>, Index_min_criterium <dbl>,
## # Index_harm_criterium <dbl>
## # A tibble: 10 × 12
## ID Habitattype Versie Habitattype.y Criterium Indicator Beoordeling Belang
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 JR02… 4030 Versi… 4030 Structuur dwergstr… B: >= codo… b
## 2 JR02… 4030 Versi… 4030 Structuur ouderdom… B: 2 tot 3… b
## 3 JR02… 4030 Versi… 4030 Vegetatie sleutels… B: Struikh… b
## 4 JR02… 4030 Versi… 4030 Verstori… verbossi… B: 10-30% b
## 5 JR02… 4030 Versi… 4030 Verstori… vergrass… B: 30-50% zb
## 6 Ts20… 4030 Versi… 4030 Structuur dwergstr… B: >= codo… b
## 7 Ts20… 4030 Versi… 4030 Structuur ouderdom… B: 2 tot 3… b
## 8 Ts20… 4030 Versi… 4030 Vegetatie sleutels… B: Struikh… b
## 9 Ts20… 4030 Versi… 4030 Verstori… verbossi… B: 10-30% b
## 10 Ts20… 4030 Versi… 4030 Verstori… vergrass… B: 30-50% zb
## # ℹ 4 more variables: Kwaliteitsniveau <int>, BeoordelingID <int>,
## # Status_indicator <lgl>, Verschilscore <dbl>
## # A tibble: 12 × 27
## ID Habitattype kwaliteit van onderzoek s…¹ Versie Habitattype.y Criterium
## <chr> <chr> <chr> <chr> <chr> <chr>
## 1 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Structuur
## 2 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Structuur
## 3 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Vegetatie
## 4 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Vegetatie
## 5 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Verstori…
## 6 JR0216 4030 Zeer goed (Zeker geen soor… Versi… 4030 Verstori…
## 7 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Structuur
## 8 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Structuur
## 9 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Vegetatie
## 10 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Vegetatie
## 11 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Verstori…
## 12 Ts2036 4030 Matig?(Waarschijnlijk soor… Versi… 4030 Verstori…
## # ℹ abbreviated name: ¹`kwaliteit van onderzoek sleutelsoorten`
## # ℹ 21 more variables: Indicator <chr>, Beoordeling <chr>,
## # Kwaliteitsniveau <int>, Belang <chr>, BeoordelingID <int>,
## # Combinatie <chr>, VoorwaardeID <int>, Voorwaarde <chr>,
## # Referentiewaarde <chr>, Operator <chr>, EenheidRefwaarde <chr>,
## # TypeRefwaarde <chr>, InvoertypeRevwaarde <chr>, Waarde <chr>,
## # TypeWaarde <chr>, InvoertypeWaarde <chr>, EenheidWaarde <chr>, …
Met deze tabellen kan verder gewerkt worden zoals hierboven beschreven is (Wat met gegenereerde gegevens in tabelvorm?)
##Basis van LSVI-package {#basis_LSVI}
###Connecteren met de databank
Om de functies van het LSVI-package te gebruiken, heb je een connectie nodig met de databank met informatie uit LSVI-rapporten (zie Doelstellingen en inhoud package > Inhoud package). Deze connectie kan op 2 manieren gelegd worden:
maakConnectiePool()
te runnen. De
gegenereerde ConnectiePool zal in de achtergrond verbinding leggen met
de databank telkens wanneer dit nodig is, extra connecties aanleggen als
dit nodig is, overbodig geworden connecties verwijderen,… en je moet
niet telkens de connectie als parameter vermelden bij elke functie die
je gebruikt. Met andere woorden: nadat je die ConnectiePool aangemaakt
hebt, moet je je verder niet meer bezighouden met die connectie. Is er
toch een functie die vereist dat je een connectie meegeeft? Dan kan je
simpelweg ConnectiePool
als argument meegeven. Als je geen
functies meer nodig hebt uit het LSVI-package, kan je deze ConnectiePool
sluiten met poolClose()
uit het package pool
en eventueel het object verwijderen.library(LSVI)
maakConnectiePool()
#Nu kan je alle functies gebruiken zonder expliciet het argument
#ConnectieLSVIhabitats op te geven, bv.
geefVersieInfo()
geefSoortenlijst(Habitattype = "4030")
#En als je geen functies meer nodig hebt uit het LSVI-package, kan je de
#ConnectiePool afsluiten en verwijderen:
library(pool)
poolClose(ConnectiePool)
rm(ConnectiePool)
connecteerMetLSVIdb()
en deze connectie voor elke functie
meegeven bij de parameter ConnectieLSVIhabitats.library(LSVI)
Connectie <- connecteerMetLSVIdb()
#Nu moet je bij elke functie opnieuw deze connectie meegeven
geefVersieInfo(ConnectieLSVIhabitats = Connectie)
geefSoortenlijst(Habitattype = "4030", ConnectieLSVIhabitats = Connectie)
#De connectie sluiten kan met dbDisconnect uit het DBI-package:
library(DBI)
dbDisconnect(Connectie)
###Gebruik van de functies zelf
De functies kunnen min of meer in groepen ingedeeld worden op basis van het eerste deel van hun naam:
maakXXX
: deze functies genereren een bestand (.html)
waarin de informatie uit de databank in een rapportageformaat
weergegeven wordtgeefXXX
: deze functies genereren een tabel met
informatie uit de databankberekenXXX
: deze functies voeren berekeningen uit
m.b.t. de LSVI op basis van opgegeven veldgegevensselecteerXXX
, vertaalXXX
en
connecteerXXX
): hulpfuncties die eventueel relevant kunnen
zijn voor gevorderde R-gebruikersVoor de functies van voornamelijk de eerste twee groepen zijn er een aantal argumenten die facultatief meegegeven kunnen worden: Versie, Habitatgroep, Habitattype, Criterium en Indicator. Door hiervoor waarden op te geven, kunnen de relevante gegevens uit de databank geselecteerd worden. Voor de argumenten waarvoor geen specifieke waarden opgegeven zijn, wordt de default ‘alle’ gebruikt, waardoor alle beschikbare gegevens voor dat argument uit de databank gehaald worden.
Voor een overzicht van de belangrijkste beschikbare functies verwijzen we naar een eerder hoofdstuk in deze handleiding ( Doelstellingen en inhoud package) en voor de gedetailleerde beschrijving verwijzen we naar de documentatie van de functies zelf. In deze documentatie wordt verwezen naar hulpfuncties waar het relevant is om deze te gebruiken.
Enkele functies worden niet of amper vermeld in deze handleiding of de documentatie van andere functies. Dit zijn technische hulpfuncties die moeilijk zijn in gebruik (vaak doordat ze als argumenten identificatienummers uit de databank nodig hebben) en die een meer gebruiksvriendelijk alternatief hebben. Ze dienen doorgaans als hulpfunctie voor hun gebruiksvriendelijke alternatieven en/of andere basisfuncties en zijn in de documentatie duidelijk benoemd als ‘hulpfunctie’ met vaak de vermelding van het meer gebruiksvriendelijke alternatief. We willen ervaren R-gebruikers de kans te geven om deze indien nodig te gebruiken, vandaar dat we ervoor kiezen om deze toch beschikbaar te stellen.
Vragen of hulp nodig? Spring gerust binnen bij BMK.