[R] observed power
Prof Brian Ripley
ripley at stats.ox.ac.uk
Mon Jan 29 09:39:35 CET 2001
What has this to do with `observed power'?
On Mon, 29 Jan 2001, Richards, Tom wrote:
> Hello:
>
> Here is my current version info:
>
> platform i386-pc-mingw32
> arch x86
> os Win32
> system x86, Win32
> status
> major 1
> minor 2.1
> year 2001
> month 01
> day 15
> language R
>
> I am using NT 4.0. Modifying some C code I originally did under R version
> 1.1.1, I find in the R Extensions manual (p. 34), that I need to change
>
> STRING to STRING_ELT
> VECTOR to VECTOR_ELT
> etc.
>
> I am using VC++ 6.0, and I simply cannot get that change to work. I am
> going to just give a simple example which shows what is happening. This
> example uses the getAttrib() and getListElement() functions which appear in
> many source files. It works perfectly on 1.1.1, but gives an unread memory
> error under 1.2.0. Am I doing something wrong here?
>
> First, a revised getListElement function, as suggested in the manual:
>
> static SEXP getListElement(SEXP list, char *str)
> {
> SEXP elmt = R_NilValue;
> SEXP names = getAttrib(list, R_NamesSymbol);
> int i;
> for (i = 0; i < length(list); i++)
> #if R_VERSION < R_Version(1, 2, 0)
> if (strcmp(CHAR(STRING(names)[i]), str) == 0)
> {
> elmt = VECTOR(list)[i];
> break;
> }
> #else
> if (strcmp(CHAR(STRING_ELT(names,i)), str) == 0)
> {
> elmt = VECTOR_ELT(list,i);
> break;
> }
> #endif
> return elmt;
> }
>
>
> Now, a simple calling function, called foo(), for Windows:
>
> __declspec (dllexport) SEXP foo(SEXP input)
> {
> SEXP L,V,tmp;
>
> input = CDR(input);L = CAR(input);
> input = CDR(input);V = CAR(input);
>
> tmp = getListElement(L, "b");
> return tmp;
> }
>
> I want to feed foo() a list and vector in R, so I made the R function
>
> foo <- function(L,V){res <- .External("foo",L,V);res}
>
> and I called
>
> > foo(list(a=4,b=6),c(2,4,9))
>
> This command yields 6, as it should, in version 1.1.1, but crashes version
> 1.2.1, with a "memory not read".
>
> If you're still reading at this point, please note that I placed the two C
> functions in a source file, and at the top I included:
>
> #define VC
>
> #include <math.h>
> #include <R.h>
> #include "Defn.h"
> #include <Rdefines.h>
Don't use Defn.h! It is not a shipped file and is not for casual
use. Quite possibly the problem.
You did not tell us how you linked this to make a DLL. Using the tools
that come with 1.2.1 and the recommend compiler, this works for me
if the non-existent Defn.h is omitted.
> Is there something obvious here that I'm missing? thanks in advance.
>
> Tom Richards
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272860 (secr)
Oxford OX1 3TG, UK Fax: +44 1865 272595
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list