search for: lcons

Displaying 11 results from an estimated 11 matches for "lcons".

Did you mean: cons
2014 Feb 26
1
help with gotoExitingHandler(R_NilValue, call, entry); . Implementation of error handling internally
...rror handling; do not reset stack */ else { SEXP hooksym, hcall, qcall; /* protect oldstack here, not outside loop, so handler stack gets unwound in case error is protect stack overflow */ PROTECT(oldstack); hooksym = install(".handleSimpleError"); PROTECT(qcall = LCONS(R_QuoteSymbol, LCONS(call, R_NilValue))); PROTECT(hcall = LCONS(qcall, R_NilValue)); hcall = LCONS(mkString(buf), hcall); hcall = LCONS(ENTRY_HANDLER(entry), hcall); PROTECT(hcall = LCONS(hooksym, hcall)); eval(hcall, R_GlobalEnv); UNPROTECT(4); } } else gotoExitingHand...
2004 Jul 06
1
Wrong object type produced - LANGSXP should be LISTSXP (PR#7055)
...15 05:40:35.000000000 -0500 +++ gram.y 2004-07-06 13:45:10.000000000 -0400 @@ -731,11 +731,11 @@ static SEXP xxsubscript(SEXP a1, SEXP a2, SEXP a3) { SEXP ans; if (GenerateCode) - PROTECT(ans = LCONS(a2, LCONS(a1, CDR(a3)))); + PROTECT(ans = LCONS(a2, CONS(a1, CDR(a3)))); else PROTECT(ans = R_NilValue); UNPROTECT_PTR(a3); UNPROTECT_PTR(a1); return ans;
2017 Jun 27
2
paste strings in C
...s, setting the rownames of colnames in R copies the matrix and costs a lot of memory and time in the process. Having all necessary headers in C, the solution I came up with involves calling the function foo() from within C: SEXP test(SEXP mymat, SEXP colnms, SEXP tilde) { SEXP call = PROTECT(LCONS(install("foo"), LCONS(mymat, LCONS(colnms, LCONS(tilde, R_NilValue))))); SEXP out = PROTECT(eval(call, R_GlobalEnv)); UNPROTECT(2); return(out); } After compilation, say in a file called test.c, back i...
2017 Jun 27
0
paste strings in C
...n R copies the matrix and > costs a lot of memory and time in the process. > > Having all necessary headers in C, the solution I came up with involves > calling the function foo() from within C: > > SEXP test(SEXP mymat, SEXP colnms, SEXP tilde) { > > SEXP call = PROTECT(LCONS(install("foo"), > LCONS(mymat, > LCONS(colnms, > LCONS(tilde, R_NilValue))))); > > SEXP out = PROTECT(eval(call, R_GlobalEnv)); > > UNPROTECT(2); > return(out); > } > > &gt...
2005 Aug 17
2
About R variable references
...SEXP myexec(/* probably has some parameters that are omitted in this example */) { int state; SEXP thecall; /* do some work, then set the state and call a callback function if necessary */ PROTECT(myvariable); INTEGER(myvariable)[0] = state; UNPROTECT(1); if(state) { PROTECT(thecall = LCONS(myfunction, LCONS(myvariable, R_NilValue))); eval(thecall, myrho); UNPROTECT(1); } return R_NilValue; } ######################################################################## ######## # R CODE ##################################################################### myinit<-function(var...
2024 Jul 06
1
API for converting LANGSXP to LISTSXP?
...ckage needs to take an existing LISTSXP and convert it to a LANGSXP (or vice versa)? I think that Luke Tierney intended to replace the uses of SET_TYPEOF(allocList(...), LANGSXP) with allocLang(...). At least it's easy to manually convert between the two by replacing the head of the list using LCONS(CAR(list), CDR(list)) or CONS(CAR(lang), CDR(lang)): in a call, the rest of the arguments are ordinary LISTSXPs. -- Best regards, Ivan
2020 Jun 30
3
Build a R call at C level
On 6/30/20 1:06 PM, Jan Gorecki wrote: > It is quite known that R documentation on R C api could be improved... Please see "5.11 Evaluating R expressions from C" from "Writing R Extensions" Best Tomas > Still R-package-devel mailing list should be preferred for this kind > of questions. > Not sure if that is the best way, but works. > > call_to_sum <-
2010 Jan 14
1
how to call a function from C
...hange). To call the function, what we do is generate a call with the function as the first node and then evaluate the call. SEXP stats = PROTECT( R_FindNamespace( mkString( "stats") ) ); SEXP rnorm = PROTECT( findVarInFrame( stats, install( "rnorm") ) ) ; SEXP call = PROTECT( LCONS( rnorm, CONS( ScalarInteger(10), CONS(ScalarReal(0), R_NilValue ) ) ) ); SEXP res = PROTECT( eval( call , R_GlobalEnv ) ); UNPROTECT(4) ; return res ; It works, but I was wondering if there was another way. I've seen applyClosure, but I'm not sure I should attempt to use it or if using a...
2014 Mar 06
1
Create dataframe in C from table and return to R
...STRING_ELT(lsnm,0,mkChar("int")); SET_STRING_ELT(lsnm,1,mkChar("string")); for ( i = 0 ; i < 3; i++ ) { SET_STRING_ELT(dfStr,i,mkChar(ab[i])); INTEGER(dfint)[i] = sn[i]; } SET_VECTOR_ELT(df,0,dfint); SET_VECTOR_ELT(df,1,dfStr); setAttrib(df,R_NamesSymbol,lsnm); //PROTECT(dfm=LCONS(dfm,list3(dfm,R_MissingArg,mkFalse()))); UNPROTECT(4); dfm = PROTECT(lang2(install("data.frame"),df)); SEXP res = PROTECT(eval(dfm,R_GlobalEnv)); UNPROTECT(2) } ------------------------------------------------------------------------ It works fine but i want it the other way the out...
2020 Jun 30
0
Build a R call at C level
Thanks Jan and Tomas for the feedback. Answer from Jan is what I am looking for. Maybe I am not looking in the right place buy it is not easy to understand how these LCONS, CONS, SETCDR...etc works. Thank you Best regards Morgan On Tue, 30 Jun 2020, 12:36 Tomas Kalibera, <tomas.kalibera at gmail.com> wrote: > On 6/30/20 1:06 PM, Jan Gorecki wrote: > > It is quite known that R documentation on R C api could be improved... > > Please see &quot...
2024 Jul 05
2
API for converting LANGSXP to LISTSXP?
Hi, A common idiom in the R sources is to convert objects between LANGSXP and LISTSXP by using SET_TYPEOF. However, this is soon going to be disallowed in packages. From what I can see, there isn't currently a direct way to convert between these two object types using the available API. At the R level, one can convert calls to pairlists with: >