[R] Help understanding environments
Davis, Brian
Brian.Davis at uth.tmc.edu
Tue Jun 18 15:57:12 CEST 2013
In my haste to make a smaller example than my actual code I used 'is.null' instead of 'exists' as is in my code. Here's a small reproducible example
res <- list(abc=letters, ABC=LETTERS)
save(res, file="results.RData")
res <- list(zyx=rev(letters), ZYX=rev(LETTERS))
save(res, file="results2.RData")
rm(res)
FILES <- c("results.RData", "results2.RData")
c_objects <- function(FILES) {
for (FILE in FILES) {
load(FILE)
if (exists(combined)) {
combined <- c(combined, res)
} else {
combined <- res
}
}
return(combined)
}
combined_results <- c_objects(FILES)
-----Original Message-----
From: Duncan Murdoch [mailto:murdoch.duncan at gmail.com]
Sent: Monday, June 17, 2013 5:40 PM
To: Davis, Brian
Cc: r-help at r-project.org
Subject: Re: [R] Help understanding environments
On 13-06-17 5:02 PM, Davis, Brian wrote:
> I have a collection of .RData files that have result objects that I would like to combine. Specifically, skatCohort objects from the skatMeta package, but I've run into a similar issue with simple data.frames also.
>
> If I run something like
>
> FILES <- list.files(path="/path/to/my/results", pattern=".RData$",
> full.names=TRUE) combined <- NULL
> for (FILE in FILES) {
> load(FILE)
> if (!is.null(combined)) {
> combined <- c(combined, res)
> } else {
> combined <- res
> }
> }
>
> I get all my objects combined. However, if I wrap this into a
> function I get the following error
>
> c_objects <- function(FILES) {
> combined <- NULL
> for (FILE in FILES) {
> load(FILE)
> if (!is.null(combined)) {
> combined <- c(combined, res)
> } else {
> combined <- res
> }
> }
> return(combined)
> }
>
> combined_results <- c_objects(FILES)
> Error in eval(expr, envir, enclos) : object 'combined' not found
>
> How should I write this function such that it can find "combined". I've tried reading the help on envirnaments, and the exisits function but I haven't been able to figure this out. Are there any other resources to read up on this?
You are doing something that you aren't showing us: I don't see any calls to eval(), but it's eval() that generated the error.
Calling traceback() after the error might be informative.
Duncan Murdoch
More information about the R-help
mailing list