Peter Ehlers wrote:
>> Giuseppe,
>> See comments below.
>> On 2010-06-13 10:24, David Winsemius wrote:
>>>>>> Giuseppe wrote:
>>>>>> Hello:
>>> I use R with MAC
>>> I have a simple data table, numeric and text columns, named dt. The
>>> table
>>> is imported through read.csv from a csv file. Row numbers are
>>> automatically assigned, header is set to TRUE. there are 599 rows and
>>> several columns.
>>>>>> I am trying to plot using the stripchart command: one numeric variable
>>> (say dt$fnatg) vs a text column (say dt$pat). dt$pat contains one of 3
>>> values: "pos", "neg", ""
>>>>>> So I issue the following command:
>>>>>>> stripchart (dt$fnatg~dt$pat)
>>>>>> and works well. it works well also with several options and nuances:
>>>>>>> stripchart (dt$fnatg ~ dt$pat, method ="jitter", jitter = 0.3, vertical
>> =TRUE,log="y", pch=1, ylab="Thyroglobulin (ng/mL)",xlab="Surgical
>> Pathology")
>>>>>> Now I want my graph to exclude values for which dt$pat == ""
>>>>>> I tried:
>>>>>>> stripchart (dt$fnatg ~ dt$pat, method ="jitter", subset (dt,
>> dt$pat!=""),jitter = 0.3, vertical =TRUE,log="y", pch=1,
>> ylab="Thyroglobulin
>> (ng/mL)",xlab="Surgical Pathology")
>>>>>> there is no effect: the plot contains the same values as before
>>>>>> the I tried first subsetting the table:
>>>>>>> patonly<-(dt, dt$pat!="") which works well in creating a new table
>> excluding the unwanted rows. I have noticed that the new table keeps the
>> same row numbers assigned in the previous table. So row numbers now go 1
>> to
>> 599 but with some intervals (for example there is no row 475 etc.).
>>>>>> then I use:
>>>>>>> stripchart (patonly$fnatg ~ patonly$pat, method ="jitter", jitter =
>>>> 0.3,
>> vertical =TRUE,log="y", pch=1, ylab="Thyroglobulin
>> (ng/mL)",xlab="Surgical
>> Pathology")
>>>>>> and I get the following error:
>>>>>> Error in plot.window(...) : need finite 'ylim' values
>>> In addition: Warning messages:
>>> 1: In min(x) : no non-missing arguments to min; returning Inf
>>> 2: In max(x) : no non-missing arguments to max; returning -Inf
>>> 3: In min(x) : no non-missing arguments to min; returning Inf
>>> 4: In max(x) : no non-missing arguments to max; returning -Inf
>>>>>> I f I try the same command but I use another text variable (for example
>>> patonly$gr) in the same table to split the plot, it now works:
>>>>>>> stripchart (patonly$fnatg ~ patonly$gr, method ="jitter", jitter = 0.3,
>> vertical =TRUE,log="y", pch=1, ylab="Thyroglobulin
>> (ng/mL)",xlab="Surgical
>> Pathology")
>>>>>>>>> My question is two fold:
>>> Why does not the subset command work within the stripchart command?
>>>>>> Why the subsetted table cannot be used in the stripchart command, when
>>> the
>>> plotting variable is the same previously used in the subsetting process?
>>>>>>>>>> You appear to have adopted a strategy of using positional matching.
>> Naming
>> your arguments will often result in more informative error messages.
>> Looking at the help page for stripchart, it appears that there is no
>> "subset" parameter to set in any of its methods and only the formula
>> method
>> has a data argument. It should work with:
>>>> stripchart(formula1 , data=subset(dta, subset=criteria), ....<rest of
>> arguments preferably named> )
>>>> Your other option might be to use the with() function:
>>>> with( subset(patonly, pat!=""), stripchart(fnatg ~ gr, ...<named
>> arguments>) )
>>>>>> HTH. and if it doesn't, then submit a reproducible data example to work
>> with.
>> Actually, Giuseppe appears to have stumbled upon a bug in the
> stripchart() function.
>> First, here's a fix:
> After your command
>> patonly<-(dt, dt$pat!="")
>> which I assume is meant to be
>> patonly <- subset(dt, dt$pat!="")
>> and which can be written as
>> patonly <- subset(dt, pat!="")
>> you should issue this:
>> patonly$pat <- factor(patonly$pat)
>> which will remove the empty level; stripchart() should
> work well after that (and do use the data= argument
> rather than dt$...).
>> Alternatively, you could change your "text" variables
> (which I assume are factors) to character values (or
> re-import your data with stringsAsFactors = FALSE).
>>> Now for the bug in stripchart():
> If the *first* group of the grouping variable is
> empty, then stripchart() has a problem determining
> the range of data values (x-values for horizontal
> charts, y-values otherwise). I can replicate your
> problem withe OrchardSprays dataset:
>> # this works:
> stripchart(decrease ~ treatment, data = OrchardSprays,
> subset = treatment != "B")
>> # this doesn't
> stripchart(decrease ~ treatment, data = OrchardSprays,
> subset = treatment != "A")
>> I'll be submitting a bug report (and I think the fix
> is easy).
>> -Peter Ehlers
>> ______________________________________________
>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.
>>Thank you Peter, both your solutions worked for me. Why do you insist for
using data = argument?
Giuseppe
Giuseppe
--
View this message in context: http://r.789695.n4.nabble.com/ERROR-need-finite-ylim-values-tp2253388p2253767.html
Sent from the R help mailing list archive at Nabble.com.