Displaying 20 results from an estimated 7000 matches similar to: "Copy on assignment to large field of reference class"
2016 Apr 05
1
Assignment operator and deep copy for calling C functions
Hi All,
i have a problem in understanding what the assignment operator '<-' really is doing.
If i create two numeric arrays in R and copy one into the other with '<-' and
afterwards change one array by calling a C function, both arrays are changed!
The problem I am facing can easily be seen in the following example:
(The following R code and the C function is attached and
2010 Sep 01
6
Why is vector assignment in R recreates the entire vector ?
Hello all,
A friend recently brought to my attention that vector assignment actually
recreates the entire vector on which the assignment is performed.
So for example, the code:
x[10]<- NA # The original call (short version)
Is really doing this:
x<- replace(x, list=10, values=NA) # The original call (long version)
# assigning a whole new vector to x
Which is actually doing this:
x<-
2011 Dec 08
1
Reference class finalize() fails with 'attempt to apply non-function'
This bug appears intermittently in R CMD check when reference classes
have finalize methods. The problem is that garbage collection can be run
after the methods package is no longer available. It affects
(periodically) the Bioconductor AnnotationDbi package as well as
packages that contain Rcpp classes. To reproduce:
library(methods)
a = setRefClass("A",
2012 Aug 05
1
setting invalid fields on reference classes sometimes allowed
I've found that reference class objects tend to behave like plain old
environments wrt field access, unless a method on e.g. $<- is explicitly
defined.
Here is a code snippet:
library(methods)
Foo <- setRefClass("Foo")
foo <- Foo$new()
foo$a <- 2 # why does this succeed? not a valid field!
## set a silly $<- method
setReplaceMethod("$", "Foo",
2012 Oct 27
2
Class generator functions for reference classes
As of rev. 61035 in r-devel, setRefClass() now returns a generator
function, as setClass() has done since 2.15.0.
The convenient style is now:
mEdit <- setRefClass("mEdit",......)
xx <- mEdit(data = xMat)
instead of
xx <- mEdit$new(data = xMat)
The returned object still has fields and methods accessible as before.
See the "Value" and "Reference Class
2013 Mar 20
1
S4 Reference Classes: undesired behavior when calling method '$field()'
Dear list,
I came across a behavior that IMHO is somewhat undesired when calling
'$field()':
If the field name whose value you're trying to get is *not* a valid
field of the Reference Class, then R doesn't stop there with an error,
but scans through all enclosing environments/frames. The result is
something similar to calling '|get(<objname>, inherits=TRUE)|'
2011 Oct 31
1
Question about copying reference objects using the initialize method
Dears,
I have a question about copying reference objects using the initialize method.
1) If the latter has no arguments, there is no problem to copy an object.
myClass = setRefClass("myClass", fields = list(value = "numeric") )
myClass$methods(initialize = function(...){
? value <<- 1
? callSuper(...)
})
newObject = myClass$new()
newObject$value = 2
copyObject =
2011 May 04
1
General "nil" reference class object
Dear John and others,
I've been wondering about whether there's any way to indicate a "nil"
reference class object, which will represent "no value", and be tested
for, but not fail the internal type checking. NULL is the obvious
choice (or seems so to me), but can only be used if an explicit class
union is created:
> Foo <- setRefClass("Foo")
> Bar
2010 Oct 28
2
Reference Classes: Generalizing Reference Class Generator objects?
Is it possible to override the $new(...) in the reference class
generator? I have tried adding a "new" method to the methods of the
class, but that is obviously not correct. I have also tried adding it to
the class generator, but the class generator still uses the default
constructor.
As a simple example, this is the current interface:
TestClass <- setRefClass
2010 Nov 21
1
reference classes: question on inheritance
Dear list,
I have a reference class which should act as a "generic" superclass for
other classes. I've read the respective section at ?setRefClass and put the
name of the superclass to the 'contains' argument of an example subclass
(see class defs below). Classnames are set in a way that shouldn't result in
collation issues (virtual def sourced before superclass def
2011 Jun 03
2
Bug or feature: using "ANY" as a generic field class (was: '[R] Is there a (virtual) class that all R objects inherit from?)
Dear list,
I was wondering if you could help me out in clarifying something:
Is it possible to use class "ANY" in slots/fields of formal classes if you
a) do not want to restrict valid classes of that field and
b) if you are making explicit use of class inheritance?
It seems to work in simple scenarios but produces errors when class
inheritance comes into play. So I was
2012 Jun 06
2
suggest that as.double( something double ) not make a copy
I've been playing with passing arguments to .C(), and found that replacing
as.double(x)
with
if(is.double(x)) x else as.double(x)
saves time and avoids one copy, in the case that x is already double.
I suggest modifying as.double to avoid the extra copy and just
return x, when x is already double. Similarly for as.integer, etc.
[[alternative HTML version deleted]]
2011 Feb 03
2
Creating a reference class object from a class definition in a package fails
Hi,
I'm trying to create a package that contains reference class
definitions from which users can create reference objects, but there
seems to be something awry.
My toy example creates an empty package via
package.skeleton('TestClass') to which I add the following R code:
TestClass <- setRefClass('TestClass',fields=c('name'))
Unfortunately my R console output
2012 Jan 17
1
names<- appears to copy 3 times?
Hi,
$ R --vanilla
R version 2.14.1 (2011-12-22)
Platform: i686-pc-linux-gnu (32-bit)
> DF = data.frame(a=1:3,b=4:6)
> DF
a b
1 1 4
2 2 5
3 3 6
> tracemem(DF)
[1] "<0x8898098>"
> names(DF)[2]="B"
tracemem[0x8898098 -> 0x8763e18]:
tracemem[0x8763e18 -> 0x8766be8]:
tracemem[0x8766be8 -> 0x8766b68]:
> DF
a B
1 1 4
2 2 5
3 3 6
>
Are those 3
2012 Jan 04
1
Is there a way to update a method on an existing Reference Class object?
Hi
Being able to do object oriented programming in R is really good. I
now started using the Reference Classes and really like it.
Though, I have one problem: I cannot find a way to update a method on
an existing object.
The flexibility that scripting gives (really needed for interactive
data analysis) is lost if everything have to be recalculated all the
time.
For example I would normally
2011 Apr 21
1
problem subsetting of a reference class
I am trying to define subset operator for a reference class and hitting some
problem i am unable to diagnose.To give an example, here is a toy class
generator that is a wrapper around a list
tmpGEN<-setRefClass("TMP", fields=list(
namelist="list"
))
tmpGEN$methods('add'=function(obj, name){
namelist[[name]]<<-obj
})
2012 Apr 14
1
deep copy?
Is putting a variable into a list a deep copy (and is tracemem the
correct way to confirm)?
warmstrong at krypton:~/dvl/R.packages$ R
> x <- rnorm(1000)
> tracemem(x)
[1] "<0x3214c90>"
> x.list <- list(x.in.list=x)
tracemem[0x3214c90 -> 0x2af0a20]:
>
Is it possible to put a variable into a list without causing a deep
copy (i.e. if you _really_ want the
2010 Nov 24
2
Reference Classes: how to clone/copy instances?
Dear list,
I don't know what's the correct term for this in the OOP context, but is it
possible to "clone"/copy an instance of a reference class (say 'a') so that
I get an *autonomous* second instance 'b'? Autonomous in the sense that
changes to 'a' do not affect 'b'.
I know that this is somewhat against the pass-by-reference paradigm, but the
2012 Jun 19
1
Reference classes and memory consumption
Dear All,
It seems that reference classes consume a lot of memory which became a problem for my rather extensive simulation.
I prepared a small example. An instance of this minimal class uses about 20K on disk.
rm(list=ls(all=TRUE));
MySmallClass = setRefClass("MySmallClass",
fields = list(
myField = "numeric"
),
methods = list(
initialize =
2011 May 27
1
Reference Classes/S4 Classes: can method dispatch check superclasses BEFORE resorting to method for "ANY"?
Dear list,
is it possible that method dispatch checks for superclasses/virtual
classes before checking "ANY"?
I'd like to build a generic initialization method for all my Reference
Class (say "MyDataFrame") objects by having them inherit from class, say
"MyRefClassVirtual" (which would have to be a virtual S4 class; there
are no virtual Reference Classes,