[R] unwanted coercion using apply
David Winsemius
dwinsemius at comcast.net
Sun May 22 21:43:35 CEST 2011
On May 22, 2011, at 3:40 PM, David Winsemius wrote:
>
> On May 22, 2011, at 2:11 AM, Jeroen Ooms wrote:
>
>> I need to convert a dataframe to a record-structure, to be able to
>> encode it
>> later in JSON. Suppose this is the data:
>>
>> mydata <- data.frame(foo=1:3, bar=c("M","M","F"));
>>
>> I would like to convert this to a unnamed list (json array) of key-
>> value
>> pairs. For example like this:
>>
>> apply(data.frame(foo=1:3, bar=c("M","M","F")),1,as.list)
>>
>> However, when I do this, all the numeric values are converted to
>> strings. I
>> don't understand why this is, because when I try to convert one
>> record
>> simulataniously, this does not happen:
>>
>> as.list(mydata[1,]);
>>
>> I am not sure if this is indended behaviour or not, but is there an
>> elegant
>> way to apply 'as.list' to all of the dataframe rows without coercing
>> everything to strings?
>
> ?pairlist
>
> pairlist( letters[1:3], 1:3)
>
I meant to preface that by noting that your dataframe has a factor
column and I suspect you want it to be "character", so:
ydata <- data.frame(foo=1:3, bar=c("M","M","F"),
stringsAsFactors=FALSE)
>
> pairlist(mydata$bar, ydata$foo) # assuming the numbers were values
> for letter names.
--
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list