[R] get element of list with default?
Marc Schwartz
marc_schwartz at me.com
Tue Apr 15 18:22:56 CEST 2014
On Apr 15, 2014, at 10:53 AM, Spencer Graves <spencer.graves at structuremonitoring.com> wrote:
> Hello:
>
>
> Do you know of a simple function to return the value of a named element of a list if that exists, and return a default value otherwise?
>
>
> It's an easy function to write (e.g., below). I plan to add this to the "Ecfun" package unless I find it in another CRAN package.
>
>
> Thanks,
> Spencer
>
>
> getElement <- function(element, default, list){
> # get element of list; return elDefault if absent
> El <- list[[element]]
> if(is.null(El)){
> El <- default
> }
> El
> }
Hi Spencer,
I don't know of a function elsewhere, but you can probably simplify the above with:
getElement <- function(element, default, list) {
ifelse(is.null(list[[element]]), default, list[[element]])
}
MyList <- list(L1 = 1, L2 = 2)
> MyList
$L1
[1] 1
$L2
[1] 2
> getElement("L1", 5, MyList)
[1] 1
> getElement("L2", 5, MyList)
[1] 2
> getElement("L3", 5, MyList)
[1] 5
You might want to think about the ordering of the function arguments, given typical use, for ease of calling it. For example:
getElement <- function(list, element, default = SomeValue)
Another consideration is that the above function will only get the element if it is a 'first level' element in the list. If it is in a sub-list of the main list, you would need to think about a recursive approach of some type, along the lines of what ?rapply does.
Regards,
Marc Schwartz
More information about the R-help
mailing list