Displaying 20 results from an estimated 10000 matches similar to: "avoid copying big object passed into optimize()"
2011 Jul 25
2
Best practices for writing R functions (really copying)
Gabriel Becker writes:
AFAIK R does not automatically copy function arguments. R actually tries
very hard to avoid copying while maintaining "pass by value" functionality.
... R only copies data when you modify an object, not
when you simply pass it to a function.
This is a bit misleading. R tries to avoid copying by maintaining a
count of how many references there are to an
2017 Sep 09
0
Avoid duplication in dplyr::summarise
Hi Lars
I am not very sure what you really want. However, I am suggesting the
following code that enables (1) to obtain the full summary of your data and
(2) retrieve only mean of X values as function of factors f1 and f2.
library(tidyverse)
library(psych)
df <- data.frame(matrix(rnorm(40), 10, 4),
f1 = gl(3, 10, labels = letters[1:3]),
f2 = gl(3, 10, labels
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
2017 Sep 09
1
Avoid duplication in dplyr::summarise
Hi Lars,
Two comments:
1. You can achieve what you want with a slight modification of your
definition of s(), using the hint from the error message that you need an
argument '.':
s <- function(.) {
dplyr::summarise(., x1m = mean(X1),
x2m = mean(X2),
x3m = mean(X3),
x4m = mean(X4))
}
2. You have not given a great test case in
2012 Sep 17
1
How to filter information from a big .csv table into a new table
Hi,
I have big .csv file. I would like to filter that file into a new table.
For example, I have .csv file as below:
f1 f2 f3 f4 f5 f6 f7 f9 f10 f11
t1 1 0 1 0 1 0 0 0 0 1
t2 1 0 0 0 0 1 1 1 1 1
t3 0 0 0 0 0 0 0 0 0 0
t4 1 0 0 0 1 0 0 0 0 0
t5 0 0 0 0 0 0 0 0 0 0
t6 0 0 0 0 0 0 0 0 0 0
2017 Sep 09
2
Avoid duplication in dplyr::summarise
Dear group,
Is there a way I could avoid the sort of duplication illustrated below?
i.e., I have the same dplyr::summarise function on different group_by
arguments. So I'd like to create a single summarise function that could be
applied to both. My attempt below fails.
df <- data.frame(matrix(rnorm(40), 10, 4),
f1 = gl(3, 10, labels = letters[1:3]),
f2 =
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]]
2016 Aug 05
2
Extra copies of objects in environments when using $ operator?
My understanding is that R will not make copies of lists if there is
only one reference to the object. However, I've encountered a case
where R does make copies, even though (I think) there should be only
one reference to the object. I hope that someone could shed some light
on why this is happening.
I'll start with a simple example. Below, x is a list with one element,
and changing that
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 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
2009 Mar 30
2
HELP WITH SEM LIBRARY AND WITH THE MODEL'S SPECIFICATION
Dear users,
i'm using the sem package in R, because i need to improve a confermative factor analisys.
I have so many questions in my survey, and i suppose, for example, that Question 1 (Q1) Q2 and Q3 explain the same thing (factor F1), Q4,Q5 and Q6 explain F2 and Q7 and Q8 explain F3...
For check that what i supposed is true, i run this code to see if the values of loadings are big or not.
2013 May 05
1
Avoid entering {} evaluation in debugger
Hi,
f1 <- function(){
browser()
print("aaa")
}
f2 <- function(){
a <- 12
eval(envir = parent.frame(),
bquote({
b <- .(a)
}))
}
Now do,
f1()
and enter n RET and then {1+2}:
Browse[2]> {1 + 2}
debug at #1: 1 + 2
Browse[3]>
{} is now being debugged. This was never bothering me
2008 Nov 25
1
Efficient passing through big data.frame and modifying select
> -----Original Message-----
> From: William Dunlap
> Sent: Tuesday, November 25, 2008 9:16 AM
> To: 'johannes_graumann at web.de'
> Subject: Re: [R] Efficient passing through big data.frame and
> modifying select fields
>
> > Johannes Graumann johannes_graumann at web.de
> > Tue Nov 25 15:16:01 CET 2008
> >
> > Hi all,
> >
> >
2006 Jul 31
5
use tracemem to dump content in function read/write
Hi Expert
I want to use dtrace to monitor the content change of one file. I made following scripts,
#!/usr/sbin/dtrace -s
inline int MYPID = $1;
syscall::write:entry
/pid == MYPID/
{
tracemem(arg1, arg2);
printf("\n");
}
It always has an following error
bash-3.00$ sudo dumpFIFO.dtrace 3836
dtrace: failed to compile script ./dumpFIFO.dtrace: line 19: tracemem( ) argument #2
2019 Sep 30
5
Is missingness always passed on?
There's a StackOverflow question
https://stackoverflow.com/q/22024082/2554330 that references this text
from ?missing:
"Currently missing can only be used in the immediate body of the
function that defines the argument, not in the body of a nested function
or a local call. This may change in the future."
Someone pointed out (in https://stackoverflow.com/a/58169498/2554330)
2010 Nov 23
1
Possibility for memory improvement: x <- as.vector(x) always(?) duplicates
Hi,
I've noticed that as.vector() always allocates a new object, e.g.
> x <- 1:10;
> x <- as.vector(x);
> tracemem(x);
[1] "<0x0000000005622db8"
> x <- as.vector(x);
tracemem[0x0000000005622db8 -> 0x0000000005622ec0]: as.vector
> x <- as.vector(x);
tracemem[0x0000000005622ec0 -> 0x0000000005622f18]: as.vector
> x <- as.vector(x);
2011 Dec 14
2
[LLVMdev] Failure to optimize ? operator
I don't understand your point. Which version is better does NOT
depend on what inputs are passed to the function. The compiled code
for (as per llvm) f1 will always take less time to execute than f2.
for x > 0 => T(f1) < T(f2)
for x <= 0 => T(f1) = T(f2)
where T() is the time to execute the given function.
So always T(f1) <= T(f2).
I would call this a missed
2008 Feb 26
11
Is there way to trace memory in the dtrace ?
N_conreq:entry {
self->x=1;
calledaddr=(struct xaddrf *)arg3;
callingaddr=(struct xaddrf *)arg4;
trace(calledaddr->link_id);
tracemem(calledaddr->DTE_MAC.lsap_add, 80);
trace(callingaddr->link_id);
tracemem(callingaddr->DTE_MAC.lsap_add, 80);
}
0 -> N_conreq 255
2012 Jul 12
2
Understanding tracemem
Hi all,
I've been trying to get a better handle on what manipulations lead R
to duplicate a vector, creating small experiments and using tracemem
to observe what happens (all in 2.15.1). That's lead me to a few
questions, illustrated using the snippet below.
x <- 1:10
tracemem(x)
# [1] "<0x1058f8238>"
x[5] <- 5
# tracemem[0x1058f8238 -> 0x105994ab0]:
x[11] <-
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<-