Looping a Function Over Multiple Data Files - Mindy Morales
Timeline
SubTasks
From Gleon Fellowship
    TypeM
    low
    ProgressM
    100%
    Start dateM
    26th Jan 2015
    Target dateM
    26th Jan 2015
    OwnerM
    Participants
    Not defined!
    Expertise
    r programming
    Legend: M Mandatory | States: Not defined, Valid, Inconsistent with parent

    Usefulness of skill

    • DOM fluorescence spectroscopy generates many large matrix files
    • Files require multiple corrections, calculations, and extraction of wavelength regions to provide useful information about DOM pool
    • Usually done in MATLAB; open source code has not been developed for R
    • Technique is not exclusive to EEM data and can be applied to any analysis that requires applying the same operation to multiple files.

    Challenges

    Working directory should only contain files of specified extension that you want to analyze

    Sample code

    In this example, a humification index (HIX, with corrections from Ohno 2008) is calculated from multiple .csv files

    Define function
    HIX<-function(low,high){sum(high)/(sum(high)+sum(low))}
    Batch import csv files from wd
    hixfiles <- list.files(pattern = "csv")
    Create NULL vector to drop data into
    hix_o <- NULL
    Loop calculates HIX across all files in wd
    for (i in 1:length(hixfiles)){
       tmp <-  read.csv(hixfiles[i])
       hix_o[i] = HIX(tmp$low, tmp$high)
    }
    
    Define vector to store results
    results = data.frame(hixfiles, hix_o)
    print(results)
    Export to wd
    write.csv(hix_o,file="hix.csv")


    Properties
    Credits
    Users who have contributed to this Task, its SubTasks and Answers:
    Yandex.Metrica