[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