Displaying 12 results from an estimated 12 matches for "scalarreal".
2014 Oct 31
3
ScalarLogical and setAttrib
...o return the attribute:
> test1()
[1] FALSE
> test2()
[1] FALSE
attr(,"foo")
[1] "bar"
> test1()
[1] FALSE
attr(,"foo")
[1] "bar"
It seems like ScalarLogical returns a singleton object, which is not
the case for ScalarInteger or ScalarReal. I am currently working
around this using duplicate(ScalarLogical(0)), but was quite surprised
by this behavior of ScalarLogical.
2004 Mar 17
1
best methods for strings and structures?
...ScalarInteger( cfg_rec.endemic_mortality ) );
SET_VECTOR_ELT( ret_val, 5, ScalarInteger( cfg_rec.sdi_mortality ) );
SET_VECTOR_ELT( ret_val, 6, ScalarInteger( cfg_rec.file_in_format ) );
SET_VECTOR_ELT( ret_val, 7, ScalarInteger( cfg_rec.file_out_format ) );
SET_VECTOR_ELT( ret_val, 8, ScalarReal( cfg_rec.fixed_plot_radius ) );
SET_VECTOR_ELT( ret_val, 9, ScalarReal( cfg_rec.min_prism_dbh ) );
SET_VECTOR_ELT( ret_val, 10, ScalarReal( cfg_rec.baf ) );
SET_VECTOR_ELT( ret_val, 11, ScalarInteger( cfg_rec.max_sample_size ) );
SET_VECTOR_ELT( ret_val, 12, ScalarInteger( cfg_rec.use_p...
2015 Jun 01
2
sum(..., na.rm=FALSE): Summing over NA_real_ values much more expensive than non-NAs for na.rm=FALSE? Hmm...
...39; example:
> sum2 <- inline::cfunction(sig=c(x="double", narm="logical"), body='
double *x_ = REAL(x);
int narm_ = asLogical(narm);
int n = length(x);
double sum = 0;
for (R_xlen_t i = 0; i < n; i++) {
if (!narm_ || !ISNAN(x_[i])) sum += x_[i];
}
return ScalarReal(sum);
')
> x <- rep(0, 1e8)
> stopifnot(typeof(x) == "double")
> system.time(sum2(x, narm=FALSE))
user system elapsed
0.16 0.00 0.16
> y <- rep(NA_real_, 1e8)
> stopifnot(typeof(y) == "double")
> system.time(sum2(y, narm=FALSE))
user...
2008 Feb 27
1
Warnings generated by log2()/log10() are really large/takes a long time to display
x <- rnorm(1e6);
y <- log(x); # or logb(x) or log1p(x)
w <- warnings();
print(object.size(w));
## [1] 480
str(w);
$ NaNs produced: language log(x)
- attr(*, "dots")= list()
- attr(*, "class")= chr "warnings"
y <- log2(x); # or log10(x)
w <- warnings();
print(object.size(w));
## [1] 8000536
str(w);
## List of 1
## $ NaNs produced: language
2010 Jan 14
1
how to call a function from C
...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
call like above is good enough.
Romain
PS: usi...
2020 May 22
0
round() and signif() do not check argument names when a single argument is given
...thmetic.c: do_Math2(). The strange cases get handled by the
code around line 1655 in src/main/arithmetic.c. The context is n is the
number of arguments, but symbol names have not yet been checked:
if(n == 1) {
double digits = 0.0;
if(PRIMVAL(op) == 10004) digits = 6.0;
SETCDR(args, CONS(ScalarReal(digits), R_NilValue));
}
Here, 10004 is the opcode symbol for signif and 10001 is for round, but
these are the only two ops handled by this function, so round uses
digits=0.0. The SETCDR creates the argument list to be the current 1-item
list plus the new digits value set here, and then this gets...
2015 Jun 01
0
sum(..., na.rm=FALSE): Summing over NA_real_ values much more expensive than non-NAs for na.rm=FALSE? Hmm...
...nline::cfunction(sig=c(x="double", narm="logical"), body='
#define LDOUBLE long double
double *x_ = REAL(x);
int narm_ = asLogical(narm);
int n = length(x);
LDOUBLE sum = 0.0;
for (R_xlen_t i = 0; i < n; i++) {
if (!narm_ || !ISNAN(x_[i])) sum += x_[i];
}
return ScalarReal((double)sum);
')
> x <- rep(0, 1e8)
> stopifnot(typeof(x) == "double")
> system.time(sum3(x, narm=FALSE))
user system elapsed
0.40 0.00 0.44
> y <- rep(NA_real_, 1e8)
> stopifnot(typeof(y) == "double")
> system.time(sum3(y, narm=FALSE))...
2007 Jun 08
1
Question about Running C code from R
...the C code (simplecall.c):
***********************************************************************************************
#include <stdio.h>
#include <Rinternals.h>
#include <R_ext/Rdynload.h>
int Rc(int a) {
return (a+3);
}
SEXP Rc2(SEXP a) {
return(18); //LINE A
// return(ScalarReal(REAL(a)[0]+12)); //LINE B
}
int main()
{
int i,j;
SEXP m,n;
i=4;j=Rc(i);
printf("\nUsing Rc: %i+3=%i - OK so far.\n",i,j);
m=6;n=Rc2(m);
printf("\nUsing Rc2: %i+12=%i - Doing well.\n",m,n);
printf("\nPress <ENTER> ...\n");
getchar();
return 0;
}
****...
2007 Mar 27
3
Use of 'defineVar' and 'install' in .Call
Dear all,
[system and version information below]
I am trying to modify a C function for finding the root of an
expression. The function is to be called from R as .Call with input
parameters:
f: expression for which we will find the root
guesses: interval for the solution
stol: tolerance
rho: environment
The original functions I use are:
SEXP mkans(double x) {
SEXP ans;
PROTECT(ans =
2007 Mar 27
3
Use of 'defineVar' and 'install' in .Call
Dear all,
[system and version information below]
I am trying to modify a C function for finding the root of an
expression. The function is to be called from R as .Call with input
parameters:
f: expression for which we will find the root
guesses: interval for the solution
stol: tolerance
rho: environment
The original functions I use are:
SEXP mkans(double x) {
SEXP ans;
PROTECT(ans =
2011 Jan 26
2
Dealing with R list objects in C/C++
Hi,
I'd like to construct an R list object in C++, fill it with relevant data, and pass it to an R function which will return a different list object back. I have browsed through all the R manuals, and examples under tests/Embedding, but can't figure out the correct way. Below is my code snippet:
#include <Rinternals.h>
// Rf_initEmbeddedR and other setups already performed
2014 Mar 05
1
[PATCH] Code coverage support proof of concept
...R_Cov_freqs_hash);
+
+ /* put the params nb_lines and growth_rate as hidden vars of the hashed env */
+ R_Cov_freqs_hash = R_NewHashedEnv(R_NilValue, ScalarInteger(0));
+ PROTECT(sexp = ScalarInteger(nb_lines));
+ defineVar(install(".nb_lines"), sexp, R_Cov_freqs_hash);
+
+ PROTECT(sexp = ScalarReal(growth_rate));
+ defineVar(install(".growth_rate"), sexp, R_Cov_freqs_hash);
+
+ R_PreserveObject(R_Cov_freqs_hash);
+}
+
+/* Ends the code coverage tracing.
+ * and returns an environment with symbols named after the covered source files and values
+ * matrices of dim n*2, which first co...