Paul.Rustomji at csiro.au
2008-Jul-29 22:20 UTC
[R] Is there a better way to check if an element of a list exists than using match on names?
Hello R mailing list Is there a better way than this to see if an element exists *within* a list object : #generate "file.txt" using current routine cat("var1=33\nvar2=TRUE",file="file.txt") #load file to a list called "ipf" f <- function(.file){source(.file,local=TRUE);as.list(environment())} ipf<- f("file.txt") print(ipf) #this is the bit I need help with... res <- match("var1",names(ipf)) # returns result > 0 if "var" exists within ipf ie. TRUE print(res) res <- match("var3",names(ipf)) #returns NA as "var3" is not in ipf ie. FALSE print(res) I have tried the exists function but cannot get it to apply to items of a list (though can get it to see if the list exists as an object...) Thanks Paul. Paul Rustomji Rivers and Estuaries CSIRO Land and Water GPO Box 1666 Canberra ACT 2601 ph +61 2 6246 5810 mobile 0406 375 739
jim holtman
2008-Jul-30 01:26 UTC
[R] Is there a better way to check if an element of a list exists than using match on names?
Is this what you want:> "var3" %in% names(ipf)[1] FALSE> "var1" %in% names(ipf)[1] TRUE>On Tue, Jul 29, 2008 at 6:20 PM, <Paul.Rustomji at csiro.au> wrote:> > Hello R mailing list > > Is there a better way than this to see if an element exists *within* a > list object : > > #generate "file.txt" using current routine > cat("var1=33\nvar2=TRUE",file="file.txt") > > #load file to a list called "ipf" > f <- function(.file){source(.file,local=TRUE);as.list(environment())} > ipf<- f("file.txt") > > print(ipf) > > > #this is the bit I need help with... > res <- match("var1",names(ipf)) # returns result > 0 if "var" exists > within ipf ie. TRUE > print(res) > res <- match("var3",names(ipf)) #returns NA as "var3" is not in ipf ie. > FALSE > print(res) > > I have tried the exists function but cannot get it to apply to items of > a list (though can get it to see if the list exists as an object...) > > Thanks > Paul. > > Paul Rustomji > Rivers and Estuaries > CSIRO Land and Water > GPO Box 1666 > Canberra ACT 2601 > > ph +61 2 6246 5810 > mobile 0406 375 739 > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem you are trying to solve?