[R] Trouble with simple R list concatenations
David Winsemius
dwinsemius at comcast.net
Mon Mar 21 05:07:10 CET 2011
Try:
family <- list(Birth_Date=Birth_Date, Later_Date=Later_Date, Names= Names)
family$Birth_Date
Sent from my iPhone ( so untested)
On Mar 20, 2011, at 9:58 PM, jim holtman <jholtman at gmail.com> wrote:
> First of all, you are working with 'vectors' not 'lists'. Look in the
> following script what str(family) is on your original input.
>
> What you probably want is a 'data.frame'. May be time to go back and
> re-read the "Intro to R" to understand the differences between
> vectors, lists and dataframes. You may also want to understand what
> 'factors' are since by default that is what character strings are
> converted to in dataframes, and that may not be what you want.
>
>> Birth_Date <- NULL
>> Birth_Date[1:3] <- c("01/17/1939","01/17/1949", "01/17/1959")
>> Later_Date <- NULL
>> Later_Date[1:3] <- c("01/17/2009", NA, NA)
>> Names <- NULL
>> Names[1:3] <- c("Martha Smith", "John Doe", "Rufus Nobody")
>>
>> #this does not work
>> family <- c(Birth_Date, Later_Date, Names)
>> family$Birth_Date
> Error in family$Birth_Date : $ operator is invalid for atomic vectors
> No suitable frames for recover()
>> str(family) # notice that this is a character vector of size 9
> chr [1:9] "01/17/1939" "01/17/1949" "01/17/1959" "01/17/2009" NA NA
> "Martha Smith" ...
>> family <- data.frame(Birth_Date, Later_Date, Names)
>> str(family)
> 'data.frame': 3 obs. of 3 variables:
> $ Birth_Date: Factor w/ 3 levels "01/17/1939","01/17/1949",..: 1 2 3
> $ Later_Date: Factor w/ 1 level "01/17/2009": 1 NA NA
> $ Names : Factor w/ 3 levels "John Doe","Martha Smith",..: 2 1 3
>> family$Birth_Date
> [1] 01/17/1939 01/17/1949 01/17/1959
> Levels: 01/17/1939 01/17/1949 01/17/1959
>>
>
>
> On Sun, Mar 20, 2011 at 9:32 PM, Jim Burke <j.burke at earthlink.net> wrote:
>> PROBLEM How can I concatenate the following lists into ONE LIST WITHOUT the
>> unhelpful message "operator is invalid for atomic vectors"? Combine as a
>> data frame?
>>
>> EXAMPLE
>>
>> Birth_Date <- NULL
>> Birth_Date[1:3] <- c("01/17/1939","01/17/1949", "01/17/1959")
>> Later_Date <- NULL
>> Later_Date[1:3] <- c("01/17/2009", NA, NA)
>> Names <- NULL
>> Names[1:3] <- c("Martha Smith", "John Doe", "Rufus Nobody")
>>
>> #this does not work
>> family <- c(Birth_Date, Later_Date, Names)
>> family$Birth_Date
>> Error in family$Birth_Date : $ operator is invalid for atomic vectors
>>
>> FUNCTIONALLY DESIRED FROM THE FINAL COMBINED data frame
>> I would appreciate being able to do the following with the final list or
>> data frame.
>> 1. Be able to address names using $
>> 2. Be able to change individual variables like the NA's to a proper date
>> perhaps like
>>
>> family$Later_Date[[3]] <- toString(format(Sys.time(),"%m/%d/%Y"), width=10)
>>
>> Thanks, your help would is gratefully accepted,
>> Jim
>>
>> ______________________________________________
>> 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.
>>
>
>
>
> --
> Jim Holtman
> Data Munger Guru
>
> What is the problem that you are trying to solve?
>
> ______________________________________________
> 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