[R] Using cbind to combine data frames and preserve header/names
Brian Feeny
bfeeny at mac.com
Sat Nov 17 22:11:48 CET 2012
David and Rainer,
Thank you both for your responses, you got me on track, I ended up just doing like so:
trainset <- read.csv('train.csv',head=TRUE)
trainset[,-1] <- binarize(trainset[,-1])
trainset$label <- as.factor(trainset$label)
I appreciate your help
Brian
On Nov 17, 2012, at 11:25 AM, David Winsemius wrote:
>
> On Nov 16, 2012, at 9:39 PM, Brian Feeny wrote:
>
>> I have a dataframe that has a header like so:
>>
>> class value1 value2 value3
>>
>> class is a factor
>>
>> the actual values in the columns value1, value2 and value3 are 0-255, I wish to binarize these using biclust.
>> I can do this like so:
>>
>> binarize(dataframe[,-1])
>>
>> this will return a dataframe, but then I lose my first column class, so I thought I could combine it like so:
>>
>> dataframe <- cbind(dataframe$label, binarize(dataframe[,-1]))
>
> There is no column with the name "label". There is also no function named "label" in base R although I cannot speak about biclust. Even if there were, you cannot apply functions to data.frames with the "$" function.
>>
>> but then I lose my header (names).............how can I do the above operation and keep my header in tact?
>>
>> Basically i just want to binarize everything but the first column (since its a factor column and not numeric).
>
> I have no idea how 'binarize' works but if you wanted to 'defactorize' a factor then you should learn to use 'as.character' to turn factors into character vectors. Perhaps:
>
> dfrm <- cbind( as.character(dataframe[1]), binarize(dataframe[,-1]))
>
> You should make sure this is still a dataframe since cbind.default returns a matrix and this would be a character matrix. I'm taking your word that the second argument is a dataframe, and that would mean the cbind.data.frame method would be dispatched.
>
> It is a rather unfortunate practice to call your dataframes "dataframe" and also bad to name your columns "class" since the first is a fundamental term and the second a basic function. If you persist, people will start talking to you about dogs named "Dog".
>
>
>
> David Winsemius, MD
> Alameda, CA, USA
>
More information about the R-help
mailing list