Delen via


Aangepaste R-modules definiëren voor Machine Learning Studio (klassiek)

VAN TOEPASSING OP:Van toepassing op. Machine Learning Studio (klassiek) is niet van toepassing op.Azure Machine Learning

Belangrijk

De ondersteuning voor Azure Machine Learning-studio (klassiek) eindigt op 31 augustus 2024. U wordt aangeraden om vóór die datum over te stappen naar Azure Machine Learning.

Vanaf 1 december 2021 kunt u geen nieuwe resources voor Azure Machine Learning-studio (klassiek) meer maken. Tot en met 31 augustus 2024 kunt u de bestaande resources van Azure Machine Learning-studio (klassiek) blijven gebruiken.

De documentatie van ML-studio (klassiek) wordt buiten gebruik gesteld en wordt in de toekomst mogelijk niet meer bijgewerkt.

In dit onderwerp wordt beschreven hoe u een aangepaste R Studio (klassiek) ontwerpt en implementeert. Hierin wordt uitgelegd wat aangepaste R-modules zijn en welke bestanden worden gebruikt om ze te definiëren. Het illustreert hoe u de bestanden maakt die een module definiëren en hoe u de module registreert voor implementatie in een Machine Learning-werkruimte. De elementen en kenmerken die worden gebruikt in de definitie van de aangepaste module worden vervolgens gedetailleerder beschreven. Het gebruik van aanvullende functionaliteit en bestanden en meerdere uitvoer wordt ook besproken.

Een aangepaste module is een door de gebruiker gedefinieerde module die kan worden geüpload naar uw werkruimte en kan worden uitgevoerd als onderdeel van het Machine Learning Studio-experiment (klassiek). Een aangepaste R-module is een aangepaste module waarmee een door de gebruiker gedefinieerde R-functie wordt uitgevoerd. R is een programmeertaal voor statistische computing en graphics die veel wordt gebruikt door statistici en gegevenswetenschappers voor het implementeren van algoritmen. Momenteel is R de enige taal die wordt ondersteund in aangepaste modules, maar ondersteuning voor aanvullende talen is gepland voor toekomstige releases.

Aangepaste modules hebben een eersteklas status in Machine Learning Studio (klassiek) in de zin dat ze net als elke andere module kunnen worden gebruikt. Ze kunnen worden uitgevoerd met andere modules, opgenomen in gepubliceerde experimenten of in visualisaties. U hebt controle over het algoritme dat door de module is geïmplementeerd, de invoer- en uitvoerpoorten die moeten worden gebruikt, de modelleringsparameters en andere verschillende runtime-gedragingen. Een experiment met aangepaste modules kan ook worden gepubliceerd in de Azure AI Gallery voor eenvoudig delen.

Bestanden in een aangepaste R-module

Een aangepaste R-module wordt gedefinieerd door een .zip-bestand dat minimaal twee bestanden bevat:

  • Een bronbestand waarmee de R-functie wordt geïmplementeerd die door de module wordt weergegeven
  • Een XML-definitiebestand dat de aangepaste module-interface beschrijft

Aanvullende hulpbestanden kunnen ook worden opgenomen in het .zip-bestand dat functionaliteit biedt die toegankelijk is vanuit de aangepaste module. Deze optie wordt besproken in het gedeelte Argumenten van de verwijzingssectie Elementen in het XML-definitiebestand volgens het quickstartvoorbeeld.

Snelstartvoorbeeld: een aangepaste R-module definiëren, verpakken en registreren

In dit voorbeeld ziet u hoe u de bestanden maakt die zijn vereist door een aangepaste R-module, deze in een zip-bestand inpakt en vervolgens de module registreert in uw Machine Learning-werkruimte. Het voorbeeld van zip-pakket en voorbeeldbestanden kan worden gedownload uit download CustomAddRows.zip bestand.

Het bronbestand

Bekijk het voorbeeld van een module Aangepaste rijen toevoegen waarmee de standaardimplementatie van de module Rijen toevoegen wordt gewijzigd die wordt gebruikt voor het samenvoegen van rijen (waarnemingen) uit twee gegevenssets (gegevensframes). De standaardmodule Rijen toevoegen voegt de rijen van de tweede invoergegevensset toe aan het einde van de eerste invoergegevensset met behulp van het rbind algoritme. De aangepaste CustomAddRows functie accepteert op dezelfde manier twee gegevenssets, maar accepteert ook een Booleaanse wisselparameter als extra invoer. Als de wisselparameter is ingesteld op FALSE, retourneert deze dezelfde gegevensset als de standaardimplementatie. Maar als de wisselparameter TRUE is, voegt de functie in plaats daarvan rijen van de eerste invoergegevensset toe aan het einde van de tweede gegevensset. Het bestand CustomAddRows.R dat de implementatie van de R-functie CustomAddRows bevat die wordt weergegeven door de module Aangepaste rijen toevoegen , heeft de volgende R-code.

CustomAddRows <- function(dataset1, dataset2, swap=FALSE) 
{
    if (swap)
    {
        return (rbind(dataset2, dataset1));
    }
    else
    {
        return (rbind(dataset1, dataset2));
    } 
} 

Het XML-definitiebestand

Als u deze CustomAddRows functie beschikbaar wilt maken als de Machine Learning Studio-module (klassiek), moet er een XML-definitiebestand worden gemaakt om op te geven hoe de module Aangepaste rijen toevoegen eruit moet zien en zich moet gedragen.

<!-- Defined a module using an R Script -->
<Module name="Custom Add Rows">
    <Owner>Microsoft Corporation</Owner>
    <Description>Appends one dataset to another. Dataset 2 is concatenated to Dataset 1 when Swap is FALSE, and vice versa when Swap is TRUE.</Description>

<!-- Specify the base language, script file and R function to use for this module. -->        
    <Language name="R" 
        sourceFile="CustomAddRows.R" 
        entryPoint="CustomAddRows" />  

<!-- Define module input and output ports -->
<!-- Note: The values of the id attributes in the Input and Arg elements must match the parameter names in the R Function CustomAddRows defined in CustomAddRows.R. -->
    <Ports>
        <Input id="dataset1" name="Dataset 1" type="DataTable">
            <Description>First input dataset</Description>
        </Input>
        <Input id="dataset2" name="Dataset 2" type="DataTable">
            <Description>Second input dataset</Description>
        </Input>
        <Output id="dataset" name="Dataset" type="DataTable">
            <Description>The combined dataset</Description>
        </Output>
    </Ports>

<!-- Define module parameters -->
    <Arguments>
        <Arg id="swap" name="Swap" type="bool" >
            <Description>Swap input datasets.</Description>
        </Arg>
    </Arguments>
</Module>

Het is belangrijk om te weten dat de waarde van de id-kenmerken van de invoer- en arg-elementen in het XML-bestand moet overeenkomen met de functieparameternamen van de R-code in het bestand CustomAddRows.R EXACT: (gegevensset1, gegevensset2 en wisselen in het voorbeeld). Op dezelfde manier moet de waarde van het entryPoint-kenmerk van het element Language overeenkomen met de naam van de functie in het R-script EXACT: (CustomAddRows in het voorbeeld).

Het id-kenmerk voor het uitvoerelement komt daarentegen niet overeen met variabelen in het R-script. Wanneer meer dan één uitvoer is vereist, retourneert u gewoon een lijst van de R-functie met resultaten die in dezelfde volgorde zijn geplaatst als uitvoerelementen worden gedeclareerd in het XML-bestand.

De module verpakken en registreren

Sla deze twee bestanden op als CustomAddRows.R en CustomAddRows.xml en zip de twee bestanden vervolgens samen in een CustomAddRows.zip bestand.

Als u deze wilt registreren in uw Machine Learning-werkruimte, gaat u naar uw werkruimte in Machine Learning Studio (klassiek), klikt u onderaan op de knop +NIEUW en kiest u MODULE -> FROM ZIP PACKAGE om de nieuwe module Aangepaste rijen toevoegen te uploaden .

Zip uploaden

De module Aangepaste rijen toevoegen is nu klaar om toegankelijk te zijn voor uw Machine Learning-experimenten.

Elementen in het XML-definitiebestand

Module-elementen

Het module-element wordt gebruikt om een aangepaste module in het XML-bestand te definiëren. Meerdere modules kunnen worden gedefinieerd in één XML-bestand met behulp van meerdere module-elementen . Elke module in uw werkruimte moet een unieke naam hebben. Registreer een aangepaste module met dezelfde naam als een bestaande aangepaste module en vervang de bestaande module door de nieuwe. Aangepaste modules kunnen echter worden geregistreerd met dezelfde naam als een bestaande Machine Learning Studio-module (klassiek). Zo ja, dan worden ze weergegeven in de categorie Aangepast van het modulepalet.

<Module name="Custom Add Rows" isDeterministic="false"> 
    <Owner>Microsoft Corporation</Owner>
    <Description>Appends one dataset to another...</Description>/> 

In het module-element kunt u twee extra optionele elementen opgeven:

  • een eigenaarelement dat is ingesloten in de module
  • een beschrijvingselement met tekst die wordt weergegeven in snelle help voor de module en wanneer u de muisaanwijzer over de module in de Machine Learning-gebruikersinterface beweegt.

Regels voor tekenslimieten in de module-elementen:

  • De waarde van het naamkenmerk in het moduleelement mag niet langer zijn dan 64 tekens.
  • De inhoud van het element Beschrijving mag niet langer zijn dan 128 tekens.
  • De inhoud van het element Eigenaar mag niet langer zijn dan 32 tekens.

De resultaten van een module kunnen deterministisch of niet-deterministisch zijn.** Standaard worden alle modules beschouwd als deterministisch. Dat wil gezegd, gezien een onveranderlijke set invoerparameters en gegevens, moet de module dezelfde resultaten eacRAND retourneren of een functietijd die wordt uitgevoerd. Gezien dit gedrag voert Machine Learning Studio (klassiek) alleen modules opnieuw uit die zijn gemarkeerd als deterministisch als een parameter of invoergegevens zijn gewijzigd. Het retourneren van de resultaten in de cache biedt ook veel snellere uitvoering van experimenten.

Er zijn functies die niet-deterministisch zijn, zoals ASELECT of een functie die de huidige datum of tijd retourneert. Als uw module een niet-deterministische functie gebruikt, kunt u opgeven dat de module niet-deterministisch is door het optionele kenmerk isDeterministisch in te stellen op FALSE. Dit zorgt ervoor dat de module opnieuw wordt uitgevoerd wanneer het experiment wordt uitgevoerd, zelfs als de moduleinvoer en parameters niet zijn gewijzigd.

Taaldefinitie

Het element Language in uw XML-definitiebestand wordt gebruikt om de aangepaste moduletaal op te geven. Momenteel is R de enige ondersteunde taal. De waarde van het kenmerk sourceFile moet de naam zijn van het R-bestand dat de functie bevat die moet worden aangeroepen wanneer de module wordt uitgevoerd. Dit bestand moet deel uitmaken van het zip-pakket. De waarde van het entryPoint-kenmerk is de naam van de functie die wordt aangeroepen en moet overeenkomen met een geldige functie die is gedefinieerd in het bronbestand.

<Language name="R" sourceFile="CustomAddRows.R" entryPoint="CustomAddRows" />

Poorten

De invoer- en uitvoerpoorten voor een aangepaste module worden opgegeven in onderliggende elementen van de sectie Poorten van het XML-definitiebestand. De volgorde van deze elementen bepaalt de door gebruikers ervaren indeling (UX). De eerste onderliggende invoer of uitvoer die wordt vermeld in het element Poorten van het XML-bestand wordt de meest linkse invoerpoort in de Machine Learning UX. Elke invoer- en uitvoerpoort kan een optioneel onderliggend element Beschrijving hebben waarmee de tekst wordt opgegeven die wordt weergegeven wanneer u de muisaanwijzer boven de poort in de Machine Learning-gebruikersinterface beweegt.

Poortregels:

  • Het maximum aantal invoer- en uitvoerpoorten is 8 voor elke poort.

Invoerelementen

Met invoerpoorten kunt u gegevens doorgeven aan uw R-functie en werkruimte. De gegevenstypen die worden ondersteund voor invoerpoorten zijn als volgt:

Datatable: Dit type wordt als een data.frame doorgegeven aan uw R-functie. In feite worden alle typen (bijvoorbeeld CSV-bestanden of ARFF-bestanden) die worden ondersteund door Machine Learning en die compatibel zijn met DataTable , automatisch geconverteerd naar een data.frame.

<Input id="dataset1" name="Input 1" type="DataTable" isOptional="false">
    <Description>Input Dataset 1</Description>
</Input>

Het id-kenmerk dat is gekoppeld aan elke gegevenstabelinvoerpoort moet een unieke waarde hebben en deze waarde moet overeenkomen met de bijbehorende benoemde parameter in uw R-functie. Optionele DataTable-poorten die niet worden doorgegeven als invoer in een experiment, hebben de waarde NULL doorgegeven aan de R-functie en optionele zip-poorten worden genegeerd als de invoer niet is verbonden. Het kenmerk isOptional is optioneel voor zowel de gegevenstabel - als zip-typen en is standaard onwaar .

Zip: Aangepaste modules kunnen een zip-bestand accepteren als invoer. Deze invoer wordt uitgepakt in de R-werkmap van uw functie

<Input id="zippedData" name="Zip Input" type="Zip" IsOptional="false">
    <Description>Zip files to be extracted to the R working directory.</Description>
</Input>

Voor aangepaste R-modules hoeft de id voor een zip-poort niet overeen te komen met parameters van de R-functie. Dit komt doordat het zip-bestand automatisch wordt geëxtraheerd naar de R-werkmap.

Invoerregels:

  • De waarde van het id-kenmerk van het invoerelement moet een geldige R-variabelenaam zijn.
  • De waarde van het id-kenmerk van het invoerelement mag niet langer zijn dan 64 tekens.
  • De waarde van het naamkenmerk van het invoerelement mag niet langer zijn dan 64 tekens.
  • De inhoud van het element Beschrijving mag niet langer zijn dan 128 tekens
  • De waarde van het typekenmerk van het invoerelement moet Zip of DataTable zijn.
  • De waarde van het isOptional-kenmerk van het invoerelement is niet vereist (en is standaard onwaar wanneer deze niet is opgegeven); maar als deze is opgegeven, moet deze waar of onwaar zijn.

Uitvoerelementen

Standaarduitvoerpoorten: Uitvoerpoorten worden toegewezen aan de retourwaarden van uw R-functie, die vervolgens kunnen worden gebruikt door volgende modules. DataTable is het enige standaarduitvoerpoorttype dat momenteel wordt ondersteund. (Ondersteuning voor cursisten en transformaties wordt binnenkort weergegeven.) Een gegevenstabeluitvoer wordt gedefinieerd als:

<Output id="dataset" name="Dataset" type="DataTable">
    <Description>Combined dataset</Description>
</Output>

Voor uitvoer in aangepaste R-modules hoeft de waarde van het id-kenmerk niet overeen te komen met iets in het R-script, maar moet deze uniek zijn. Voor één module-uitvoer moet de retourwaarde van de R-functie een data.frame zijn. Als u meer dan één object van een ondersteund gegevenstype wilt uitvoeren, moeten de juiste uitvoerpoorten worden opgegeven in het XML-definitiebestand en moeten de objecten worden geretourneerd als een lijst. De uitvoerobjecten worden van links naar rechts toegewezen aan uitvoerpoorten, die de volgorde weergeven waarin de objecten in de geretourneerde lijst worden geplaatst.

Als u bijvoorbeeld de module Aangepaste rijen toevoegen wilt wijzigen om de oorspronkelijke twee gegevenssets, gegevensset1 en gegevensset2 uit te voeren, naast de nieuwe gekoppelde gegevensset, gegevensset, (in een volgorde, van links naar rechts, als: gegevensset, gegevensset1, gegevensset2), definieert u de uitvoerpoorten in het CustomAddRows.xml-bestand als volgt:

<Ports> 
    <Output id="dataset" name="Dataset Out" type="DataTable"> 
        <Description>New Dataset</Description> 
    </Output> 
    <Output id="dataset1_out" name="Dataset 1 Out" type="DataTable"> 
        <Description>First Dataset</Description> 
    </Output> 
    <Output id="dataset2_out" name="Dataset 2 Out" type="DataTable"> 
        <Description>Second Dataset</Description> 
    </Output> 
    <Input id="dataset1" name="Dataset 1" type="DataTable"> 
        <Description>First Input Table</Description>
    </Input> 
    <Input id="dataset2" name="Dataset 2" type="DataTable"> 
        <Description>Second Input Table</Description> 
    </Input> 
</Ports> 

En retourneer de lijst met objecten in een lijst in de juiste volgorde in CustomAddRows.R:

CustomAddRows <- function(dataset1, dataset2, swap=FALSE) { 
    if (swap) { dataset <- rbind(dataset2, dataset1)) } 
    else { dataset <- rbind(dataset1, dataset2)) 
    } 
    return (list(dataset, dataset1, dataset2)) 
} 

Visualisatie-uitvoer: U kunt ook een uitvoerpoort van het type Visualisatie opgeven, waarmee de uitvoer van het R-grafische apparaat en de console-uitvoer wordt weergegeven. Deze poort maakt geen deel uit van de R-functie-uitvoer en heeft geen invloed op de volgorde van de andere typen uitvoerpoorten. Als u een visualisatiepoort wilt toevoegen aan de aangepaste modules, voegt u een uitvoerelement toe met de waarde Visualisatie voor het bijbehorende typekenmerk :

<Output id="deviceOutput" name="View Port" type="Visualization">
    <Description>View the R console graphics device output.</Description>
</Output>

Uitvoerregels:

  • De waarde van het id-kenmerk van het uitvoerelement moet een geldige R-variabelenaam zijn.
  • De waarde van het id-kenmerk van het uitvoerelement mag niet langer zijn dan 32 tekens.
  • De waarde van het naamkenmerk van het uitvoerelement mag niet langer zijn dan 64 tekens.
  • De waarde van het typekenmerkvan het uitvoerelement moet Visualisatie zijn.

Argumenten

Aanvullende gegevens kunnen worden doorgegeven aan de R-functie via moduleparameters die zijn gedefinieerd in het element Argumenten . Deze parameters worden weergegeven in het deelvenster met de meest rechtse eigenschappen van de Machine Learning-gebruikersinterface wanneer de module is geselecteerd. Argumenten kunnen een van de ondersteunde typen zijn of u kunt indien nodig een aangepaste opsomming maken. Net als bij de elementen Poorten kunnen argumentenelementen een optioneel beschrijvingselement hebben waarmee de tekst wordt opgegeven die wordt weergegeven wanneer u de muisaanwijzer boven de parameternaam beweegt. Optionele eigenschappen voor een module, zoals defaultValue, minValue en maxValue, kunnen worden toegevoegd aan elk argument als kenmerken aan een element Eigenschappen . Geldige eigenschappen voor het element Eigenschappen zijn afhankelijk van het argumenttype en worden beschreven met de ondersteunde argumenttypen in de volgende sectie. Voor argumenten met de eigenschap isOptional ingesteld op 'true' hoeft de gebruiker geen waarde in te voeren. Als er geen waarde wordt opgegeven voor het argument, wordt het argument niet doorgegeven aan de invoerpuntfunctie. Argumenten van de invoerpuntfunctie die optioneel zijn, moeten expliciet worden verwerkt door de functie, bijvoorbeeld een standaardwaarde van NULL toegewezen in de definitie van de invoerpuntfunctie. Een optioneel argument dwingt alleen de andere argumentbeperkingen af, bijvoorbeeld min of max, als een waarde wordt opgegeven door de gebruiker. Net als bij invoer en uitvoer is het essentieel dat aan elk van de parameters unieke id-waarden zijn gekoppeld. In ons snelstartvoorbeeld is de gekoppelde id/parameter verwisseld.

Arg-element

Er wordt een moduleparameter gedefinieerd met behulp van het onderliggende element Arg van de sectie Argumenten van het XML-definitiebestand. Net als bij de onderliggende elementen in de sectie Poorten definieert de volgorde van parameters in de sectie Argumenten de indeling die is aangetroffen in de UX. De parameters worden vanaf boven naar beneden weergegeven in de gebruikersinterface in dezelfde volgorde waarin ze zijn gedefinieerd in het XML-bestand. De typen die worden ondersteund door Machine Learning voor parameters worden hier vermeld.

int : een parameter van het type Integer (32-bits).

<Arg id="intValue1" name="Int Param" type="int">
    <Properties min="0" max="100" default="0" />
    <Description>Integer Parameter</Description>
</Arg>
  • Optionele eigenschappen: min, max, standaard en isOptional

double – een parameter met dubbel type.

<Arg id="doubleValue1" name="Double Param" type="double">
    <Properties min="0.000" max="0.999" default="0.3" />
    <Description>Double Parameter</Description>
</Arg>
  • Optionele eigenschappen: min, max, standaard en isOptional

bool : een Booleaanse parameter die wordt vertegenwoordigd door een selectievakje in UX.

<Arg id="boolValue1" name="Boolean Param" type="bool">
    <Properties default="true" />
    <Description>Boolean Parameter</Description>
</Arg>
  • Optionele eigenschappen: standaard - onwaar als deze niet is ingesteld

tekenreeks: een standaardtekenreeks

<Arg id="stringValue1" name="My string Param" type="string">
    <Properties isOptional="true" />
    <Description>String Parameter 1</Description>
</Arg>    
  • Optionele eigenschappen: standaard en isOptional

ColumnPicker: een kolomselectieparameter. Dit type wordt weergegeven in de UX als kolomkiezer. Het eigenschapselement wordt hier gebruikt om de id op te geven van de poort waaruit kolommen worden geselecteerd, waarbij het doelpoorttype DataTable moet zijn. Het resultaat van de kolomselectie wordt doorgegeven aan de R-functie als een lijst met tekenreeksen met de geselecteerde kolomnamen.

<Arg id="colset" name="Column set" type="ColumnPicker">      
    <Properties portId="datasetIn1" allowedTypes="Numeric" default="NumericAll"/>
    <Description>Column set</Description>
</Arg>
  • Vereiste eigenschappen: portId - komt overeen met de id van een invoerelement met het type Gegevenstabel.

  • Optionele eigenschappen:

    • allowedTypes : hiermee filtert u de kolomtypen waaruit u kunt kiezen. Geldige waarden zijn:

      • Numeriek
      • Boolean
      • Categorische gegevens
      • Tekenreeks
      • Label
      • Functie
      • Score
      • Alles
    • standaard : geldige standaardselecties voor de kolomkiezer zijn onder andere:

      • Geen
      • Numeriekefeature
      • Numerieklabel
      • Numerieke score
      • Numeriekeall
      • Booleaanse waarde
      • Booleaanse label
      • Booleaanse score
      • Booleaanse waardeAll
      • CategoricalFeature
      • CategoricalLabel
      • CategoricalScore
      • CategoricalAll
      • StringFeature
      • StringLabel
      • StringScore
      • StringAll
      • AllLabel
      • AllFeature
      • AllScore
      • Alles

Vervolgkeuzelijst: een door de gebruiker opgegeven opsommingslijst (vervolgkeuzelijst). De vervolgkeuzelijstitems worden opgegeven in het element Eigenschappen met behulp van een itemelement . De id voor elk item moet uniek zijn en een geldige R-variabele. De waarde van de naam van een item fungeert als zowel de tekst die u ziet als de waarde die wordt doorgegeven aan de functie R.

<Arg id="color" name="Color" type="DropDown">
    <Properties default="red">
        <Item id="red" name="Red Value"/>
        <Item id="green" name="Green Value"/>
        <Item id="blue" name="Blue Value"/>
    </Properties>
    <Description>Select a color.</Description>
</Arg>    
  • Optionele eigenschappen:
    • standaard : de waarde voor de standaardeigenschap moet overeenkomen met een id-waarde van een van de itemelementen .

Hulpbestanden

Elk bestand dat in het ZIP-bestand van uw aangepaste module wordt geplaatst, is beschikbaar voor gebruik tijdens de uitvoering. Alle aanwezige mapstructuren blijven behouden. Dit betekent dat bestandsbronnen lokaal en in de uitvoering van Machine Learning Studio (klassiek) hetzelfde werken.

Notitie

U ziet dat alle bestanden worden geëxtraheerd naar de map 'src', zodat alle paden het voorvoegsel 'src/' moeten hebben.

Stel dat u rijen met NA's uit de gegevensset wilt verwijderen en ook dubbele rijen wilt verwijderen voordat u deze uitvoert in CustomAddRows, en u hebt al een R-functie geschreven die dat doet in een bestand RemoveDupNARows.R:

RemoveDupNARows <- function(dataFrame) {
    #Remove Duplicate Rows:
    dataFrame <- unique(dataFrame)
    #Remove Rows with NAs:
    finalDataFrame <- dataFrame[complete.cases(dataFrame),]
    return(finalDataFrame)
}

U kunt het hulpbestand RemoveDupNARows.R in de functie CustomAddRows als bron gebruiken:

CustomAddRows <- function(dataset1, dataset2, swap=FALSE) {
    source("src/RemoveDupNARows.R")
        if (swap) { 
            dataset <- rbind(dataset2, dataset1))
        } else { 
            dataset <- rbind(dataset1, dataset2)) 
        } 
    dataset <- removeDupNARows(dataset)
    return (dataset)
}

Upload vervolgens een zip-bestand met 'CustomAddRows.R', 'CustomAddRows.xml' en 'RemoveDupNARows.R' als een aangepaste R-module.

Uitvoeringsomgeving

De uitvoeringsomgeving voor het R-script gebruikt dezelfde versie van R als de Execute R Script-module en kan dezelfde standaardpakketten gebruiken. U kunt ook extra R-pakketten toevoegen aan uw aangepaste module door ze op te slaan in het zip-pakket van de aangepaste module. Laad ze gewoon in uw R-script zoals u dat in uw eigen R-omgeving zou doen.

Beperkingen van de uitvoeringsomgeving zijn onder andere:

  • Niet-permanent bestandssysteem: bestanden die zijn geschreven wanneer de aangepaste module wordt uitgevoerd, worden niet bewaard in meerdere uitvoeringen van dezelfde module.
  • Geen netwerktoegang