[R] struggling with pairlists

Wacek Kusnierczyk Waclaw.Marcin.Kusnierczyk at idi.ntnu.no
Fri Mar 20 19:13:36 CET 2009


mauede at alice.it wrote:
> I would like to create a vector of pairlist (flag, binary_value)  like:
>
>  (variable ="TrendOff",     value = 0)
>  (variable ="MOdwt",        value = 1)
>  (variable ? "ZeroPadding", value =1) 
>   ................................................
>
> I tried the following syntax but the emcompassing list (that I called "flags") is not made up of pairlists. Instead it is
> made up of two apparently disjoint lists:
>
>
>   
>> flags_val <- c( 0,1,1,1,4,1,1,1,4,1,1,1,4,1,1,1,4,1,1)
>>  flags_nam <- c("TrendOff","MOdwt","ZeroPadding",
>>     
> +                 "Step1HSOff","Step1NumHSOff","Step1NumHSOff","Step1ExtOff",
> +                 "Step2HSOff","Step2NumHSOff","Step2NumHSOff","Step2ExtOff",
> +                 "Step3HSOff","Step3NumHSOff","Step3NumHSOff","Step3ExtOff",
> +                 "Step4HSOff","Step4NumHSOff","Step4NumHSOff","Step4ExtOff" )
>   
>>  flags_nam 
>>     
>  [1] "TrendOff"      "MOdwt"         "ZeroPadding"   "Step1HSOff"    "Step1NumHSOff" "Step1NumHSOff"
>  [7] "Step1ExtOff"   "Step2HSOff"    "Step2NumHSOff" "Step2NumHSOff" "Step2ExtOff"   "Step3HSOff"   
> [13] "Step3NumHSOff" "Step3NumHSOff" "Step3ExtOff"   "Step4HSOff"    "Step4NumHSOff" "Step4NumHSOff"
> [19] "Step4ExtOff"  
>   
>> flags <- pairlist (data = flags_val, variable = flags_nam) 
>> flags
>>     
> $data
>  [1] 0 1 1 1 4 1 1 1 4 1 1 1 4 1 1 1 4 1 1
>
> $variable
>  [1] "TrendOff"      "MOdwt"         "ZeroPadding"   "Step1HSOff"    "Step1NumHSOff" "Step1NumHSOff"
>  [7] "Step1ExtOff"   "Step2HSOff"    "Step2NumHSOff" "Step2NumHSOff" "Step2ExtOff"   "Step3HSOff"   
> [13] "Step3NumHSOff" "Step3NumHSOff" "Step3ExtOff"   "Step4HSOff"    "Step4NumHSOff" "Step4NumHSOff"
> [19] "Step4ExtOff"  
>
>
> Please, can someone teach me how to create a vector of pairlists ? 
> I could find no illustrating on-line example.
> Thank you very much.
>   

not sure if you need pairlists;  as far as i understand, you need a list
of two-element tuples where the elements in each tuple are of difefernt
types (character and numeric).

once you have the two original vectors, there are a number of
approaches; e.g., create a list of lists:

    # dummy data  
    variables = letters[1:5]
    values = 1:5

    output = mapply(
        function(variable, value)
            list(variable=variable, value=value),
        variables, values, SIMPLIFY=FALSE)
    # a list of lists, where each sublist contains a variable
    output$a
    # list of "a" and 1
    output$a$variable
    # "a"
    output[[1]]$value
    # 1

(note the fancy 'SIMPLIFY'). 

but you'd probably find it convenient to use a data frame:

    # dummy data  
    variables = letters[1:5]
    values = 1:5

    output = data.frame(variable=variables, value=values,
stringsAsFactors=FALSE)
    # a data frame with variables and values in separate columns

    output$variables
    # "a" "b" "c" "d" "e"

    output[1,]
    # one-row data frame with "a" and 1

    output[1,]$variable
    # "a"


vQ




More information about the R-help mailing list