[R] extract printed value from a function
Keith Jewell
k.jewell at campden.co.uk
Thu Feb 24 16:14:13 CET 2011
I don't think that third suggestion actually works:
> x <- print( twotPermutation(c(2,3,4),c(3,6,5),plotit=F) )
[1] 0.289
NULL
> x
NULL
twotPermutation returns the value of invisible() which is NULL:
x <- print(invisible())
x
This conflicts with the documented behaviour of twotPermutation which states
that it should return the p-value ("Value: The p-value for the test of the
hypothesis that the mean of x1 differs from x2") and makes no mention of
returning it invisibly, or printing the value when it is returned. I suggest
that the function is in error and should be corrected by replacing the final
two lines
---------------
print(signif(pval, 3))
invisible()
-------------
with simply
--------------
signif(pval, 3)
-------------
Relying on the default behaviour of R to print the value when it is not
assigned. I will copy this suggestion to the listed maintainer (W. John
Braun braun at stats.uwo.ca)
"David Winsemius" <dwinsemius at comcast.net> wrote in message
news:53D4D49F-F8E1-44C0-B663-8B24D8420F0D at comcast.net...
>
> On Feb 24, 2011, at 7:22 AM, Peter Ehlers wrote:
>
>> On 2011-02-24 03:26, Duarte Viana wrote:
>>> Hello all,
>>>
>>> This shouldn't be difficult, but I am not able to extract a printed
>>> value from a function and assign it to an object.
>>>
>>> In my case,
>>>
>>>> library(DAAG)
>>>> twotPermutation(c(2,3,4),c(3,6,5),plotit=F)
>>> [1] 0.298
>>>
>>> I would like to assign this result to an object.
>
> A third suggestion which has virtues of simplicity and keeping the result
> "numeric":
>
> x <- print( twotPermutation(c(2,3,4),c(3,6,5),plotit=F) )
>
> > x
> [1] 0.1
> > x <- print(invisible (0.2))
> [1] 0.2
> > x
> [1] 0.2
>
> --
>
>
>>
>> Two suggestions:
>> 1.
>> Modify the code for twotPermutation by removing the invisible()
>> at the end.
>>
>> 2.
>> Use capture.output to capture the result and then convert
>> to numeric:
>>
>> pvstring <- capture.output(
>> twotPermutation( c(2,3,4), c(3,6,5), plotit=FALSE) ))
>>
>> Now you can use strsplit or substr to extract the numeric part:
>>
>> pv <- as.numeric(strsplit(pvstring, " ")[[1]][2])
>>
>> or
>>
>> pv <- as.numeric(
>> substr(pvstring, nchar(pvstring) - 5, nchar(pvstring)))
>>
>> Peter Ehlers
>>
>>>
>>> Thanks,
>>>
>>> Duarte
More information about the R-help
mailing list