<div dir="ltr">I'm currently using a (moderately) complex function, call <div>if f(), as a j expression to analyze my data.  The data itself</div><div>is about 1.2M rows, which I analyze by group.<div>A group may have as few as one row or as many as 10K.</div>
<div>The output from the function is a two-column data.table</div><div>where the rows are interesting (for my work) pairs of</div><div>observations--I have no idea how many pairs will be</div><div>interesting until the function runs, but in abstract it could</div>
<div>be every unique combination (so as many as 50M rows</div><div>of output for one call to f()).  It is common, and not an</div><div>error, for groups to have no meaningful pairs to return.</div><div><br></div><div>I've been using the following line to create the output for</div>
<div>f():</div><div><br></div><div>indices <- data.table(i = integer(), j = integer())<br></div><div><br></div><div>I then append to 'indices' any useful pairs using:</div><div><br></div><div>indices <- rbind(indices, list(idx[i], idx[j]))<br>
</div><div><br></div><div>This works, but is very, very slow, in part because I'm </div><div>using rbind().  I want to switch to using the built-in matrix,</div><div>because rbind() should be much faster for them.  Using</div>
<div>the following line to create the matrix:</div><div><br></div><div>indices <- matrix(nrow = 0, ncol = 2, dimnames = list(c(NULL),c("i","j")))<br></div><div><br></div><div>results in the following error:</div>
<div><br></div><div>Logical error. Type of column should have been checked by now<br></div><div><br></div><div>Note that the values returned are always integers.  Results are </div><div>coerced via:</div><div><br></div><div>
data.table(indices)</div><div><div><br></div><div>before returning from f().  If I don't explicitly coerce, I get the</div><div>following error:</div><div><br></div><div>j doesn't evaluate to the same number of columns for each group<br>
</div><div><br></div><div>If someone could tell me what I'm doing wrong, or some other</div><div>equivalent way to noticeably speed up the whole process, I'd</div><div>be very grateful.</div><div><br></div><div><br>
</div><div>-------<br>Nathaniel Graham<br><a href="mailto:npgraham1@gmail.com" target="_blank">npgraham1@gmail.com</a><br><a href="mailto:npgraham1@uky.edu" target="_blank">npgraham1@uky.edu</a></div>
</div></div></div>