Dear useR's
I have a small basic problem which I am hoping to get some help with. I have
a data frame, testSeq_df, with 1 row and 500 columns. Each column is a
character (a,c,g or t). I want this sequence to have 4 factors (a,c,g,t).
When I try the following:
for(i in 1:500){
if (length(levels(testSeq_df[,i]))==1)
levels(testSeq_df[,i]) <-
c(a="a",g="g",c="c",t="t")}
it replaces all the values in the sequence with "a" only. So all
columns
become "a". How do I fix this so that the columns retain their
original
values but still have 4 levels ie. a,c,g,t.
Thanks a lot for your help,
Vishal
On Sat, Dec 26, 2009 at 10:39 AM, Vishal Thapar
<vishalthapar@gmail.com>wrote:
> Hi David,
>
> Thank you so much for the pointer. I get it now. I did try the
> str(testSeq_df) and since it gave me more than 2 factors for each column, I
> believed that it was fine. I get the point clearly now. Thanks again for
all
> your help. I really appreciate it.
>
> Sincerely,
>
> vishal
>
>
> On Sat, Dec 26, 2009 at 8:26 AM, David Winsemius
<dwinsemius@comcast.net>wrote:
>
>>
>> On Dec 26, 2009, at 3:53 AM, Vishal Thapar wrote:
>>
>> Hi All,
>>>
>>> Thank you for your replies so far. I was hoping I could get some
more
>>> input from you on this issue. It seems to me that I have hit a dead
end here
>>> and would really appreciate some feedback. I have followed all the
>>> suggestions you have mentioned but they still this is stuck.
Earlier I
>>> thought that it was a "factor" issue but now even that is
not the error.
>>> Here is the script and the error. Thanks for your help. I have
attached the
>>> sample test file as well as the training file in case you would
like to run
>>> it locally.
>>> ---------------------------------
>>> library(seqinr)
>>> library("kernlab")
>>>
>>
>>
>> > str(mars500_1_df)
>> 'data.frame': 256 obs. of 501 variables:
>> All of which are factors with 4 levels
>>
>>
>> testSeq_fa=read.fasta("temp1.fasta")
>>> testSeq_seq=t(getSequence(testSeq_fa))
>>> testSeq_df=as.data.frame(testSeq_seq,stringsAsFactors=FALSE)
>>> testSeq_df = cbind(Class="-",testSeq_df)
>>> testSeq_df = data.frame(lapply(testSeq_df,factor))
>>>
>> > str(testSeq_df)
>> 'data.frame': 20 obs. of 501 variables:
>>
>> $ V9 : Factor w/ 3 levels "a","c","t":
2 1 2 1 3 2 3 2 3 1 ...
>> $ V9 : Factor w/ 3 levels "a","c","t":
2 1 2 1 3 2 3 2 3 1 ...
>> $ V26 : Factor w/ 3 levels "a","g","t":
2 1 1 1 1 3 1 3 1 3 ...
>> ...and about 10 more...
>>
>> So I think you were closer but not quite there yet.
>> > for(i in 11:501){if (length(levels(testSeq_df[,i])) == 3)
>> levels(testSeq_df[,i])<-
c(a="a",g="g",c="c",c="t")}
>>
>>
>> > predict(mars500_1,testSeq_df)
>> [1] - - - - + - + - - - - + + + - - - - - +
>> Levels: - +
>>
>> YES, it WAS (and still is) a "factor issue". You were shown
how to look at
>> objects with str. Why have you not adopted the practice?
>>
>> --
>>
>>
>> David Winsemius, MD
>> Heritage Laboratories
>> West Hartford, CT
>>
>>
>
>
> --
> Vishal Thapar, Ph.D.
> Post Doctoral Researcher
> Cold Spring Harbor Lab
> Williams Bldg
>
> 1 Bungtown Road
> Cold Spring Harbor, NY - 11724
>
>
--
Vishal Thapar, Ph.D.
Post Doctoral Researcher
Cold Spring Harbor Lab
Williams Bldg
1 Bungtown Road
Cold Spring Harbor, NY - 11724
[[alternative HTML version deleted]]