Need a way to control copy behavior when using :=
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
Research direction
Start with the data[, names(cols) := cols] entry point and compare it with the c(as.list(data), cols); setDT(data) workaround. Determine how := currently handles copying and define tests for explicit user-controlled behavior; done means adding the columns without unnecessary copying while preserving their values.
Written by the indexing model from the issue text.
Description
I'm working with data, a data.table of 50M rows and 60 columns. I'll compute more than 100 new columns to add to the data.table.
cols <- mclapply(1:100, function(i) nrow(data), mc.cores = 40)
names(cols) <- paste0("x", seq_along(cols))
system.time(data[, names(cols) := cols])
I'll take more than 30 seconds. However, cols are no longer used so it'll be safe not to copy it when performing :=. I wonder if user should be allowed to control the copy behavior of := which is by default TRUE in this case.
A simple walk-around is
data <- c(as.list(data), cols)
setDT(data)
This only takes 0.3 seconds without copying any columns.
- Dominant language
- R
- Stars
- 3.9k
- Forks
- 1.1k
- Avg merge
- 14h 4m
- Merged PRs (30d)
- 4
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Rdatatable/data.table
-
as.data.table() recurses without end on a survival::Surv object (or any data.frame carrying one) Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Rdatatable/data.table#7887 ·
-
consistency tests
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Rdatatable/data.table#7853 · 3 comments ·
-
internals
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Rdatatable/data.table#6938 · 1 comment ·
-
encoding fread
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Rdatatable/data.table#5179 · 8 comments ·
-
documentation programming
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Rdatatable/data.table#3199 · 3 comments ·
All issues in Rdatatable/data.table
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
r-lib/pkgdepends#485 · 3 comments ·
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
-
beginners blocker
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enviPathR OpenBuild Error Build OK Build Warning policies-accepted pre-review precheck-passed
Difficulty 1/5 Under an hour Newbie friendliness 84/100
Bioconductor/BiocContributions#207 · 6 comments ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
datacarpentry/semester-biology#1255 ·