[R] creating a dynamic output vector

Steve Powers smpowers at wisc.edu
Thu Nov 8 03:00:08 CET 2007


Everyone is assuming I know what the output data are, or that they come 
out from my model in some easily called vector. But I don't, and they do 
not. The outputs are hidden, and all are separate variables that need to 
be called. Also which ones come out after a given run will vary each 
time. All I have to reference the desired output variables are the names 
of every POTENTIAL output in character format, all in one vector.

In any event, if anyone knows how to simply put all workspace variable 
names into one character vector, and their values/strings in another 
vector, that should work and I could take it from there (all I need are 
the one element variables, not vectors or data frames). Initially I 
messed around for awhile with ls() and ls.str() with no luck. Can't get 
those data into a useful format.



jim holtman wrote:
> Here is a function that might do what you want:
>
>   
>> # function to create the output
>> f.output <- function(dat){
>>     
> +     # create the base output vector
> +     output.base <- rep(NA,10)
> +     names(output.base) <- paste("var", 1:10, sep='')
> +     output.base[names(dat)] <- dat
> +     output.base
> + }
>   
>> f.output(c(var1=10, var5=5, var2=2))
>>     
>  var1  var2  var3  var4  var5  var6  var7  var8  var9 var10
>    10     2    NA    NA     5    NA    NA    NA    NA    NA
>   
>> f.output(c(var6=6, var10=10, var1=1))
>>     
>  var1  var2  var3  var4  var5  var6  var7  var8  var9 var10
>     1    NA    NA    NA    NA     6    NA    NA    NA    10
>   
>> f.output(c(var4=4, var4=5))  # same variable with two values -- last one taken
>>     
>  var1  var2  var3  var4  var5  var6  var7  var8  var9 var10
>    NA    NA    NA     5    NA    NA    NA    NA    NA    NA
>   
>
>
> On 11/7/07, Steve Powers <smpowers at wisc.edu> wrote:
>   
>> Let's say I have a program that returns variables whose names may be any
>> string within the vector
>> NAMES=c("varA","varB","varC","varD","varE","varF"..."varZ"), but I do
>> not ever know which ones have actually been created. So in one example
>> output, "varA", "varC", and "varD" could exist, but in another example
>> output "varA", "varD", "varE",and "varF" exist, with no pattern or
>> predictability (different combinations can come out, as well as
>> different numbers of variables).
>>
>> How do assign the output values, in pre-arranged order, into an output
>> vector? The output vector for the first example would be OUTPUTS=c(varA,
>> NA, varC, varD...) and the output vector for the second example would be
>> OUTPUTS=c(varA, NA, NA, varD, varE, varF...).  In other words, the rows
>> for all potential returned values need to be retained in the order set
>> by NAMES, and the values all need to be plugged into their respective
>> spot in that order if they exist. Otherwise NA is plugged in.
>>
>> One other factor is that some outputs are values, but others are text. Tips?
>>
>>
>> Using R version 2.4 on Windows XP
>>
>> ______________________________________________
>> 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.
>>
>>     
>
>
>



More information about the R-help mailing list