[datatable-help] setnames on a non-data.table object
Ricardo Saporta
saporta at scarletmail.rutgers.edu
Wed Oct 2 19:13:09 CEST 2013
yes, it was mostly in general. eg
X <- 1:5
setnames(X, LETTERS[X])
# Error in setnames(X, LETTERS[X]) : x is not a data.table or data.frame
Ricardo Saporta
Graduate Student, Data Analytics
Rutgers University, New Jersey
e: saporta at rutgers.edu
On Wed, Oct 2, 2013 at 12:28 PM, Matt Dowle <mdowle at mdowle.plus.com> wrote:
>
> Rick,
>
> Oh - setnames already does work on data.frame. That was a change in
> v1.8.4.
>
> Was the question more for lists and vectors then (anything that can have
> names), rather than just data.frame/data.table?
>
> Matt
>
>
> On 02/10/13 15:13, Matt Dowle wrote:
>
> On 02/10/13 12:50, Ricky Saporta wrote:
>
>
> This might be a topic to raise in a separate email:
> What do you think of adapting a naming convention where the name of the
> function indicates when a function will modify an object by reference? In
> my personal work, I have been trying to end such functions with an
> underscore. Putting aside for the moment all obvious and not so obvious
> issues with changing the names of existing functions & backwards
> compatibility, is the idea itself worth considering?
>
>
> Maybe. But the convention was already that any function started "set"
> indicates it will change the object by reference. The documentation uses
> "set*" in several places with this in mind.
>
> > objects("package:data.table", pattern="^set")
> [1] "set" "setattr" "setcolorder" "setkey" "setkeyv"
> [6] "setnames"
> >
>
> If the functions insert() and delete() are added, they'll add and remove
> rows by reference. Those verbs don't start with set, but it's clear (in my
> mind) that they'd change the data.table by reference; e.g. insert(DT, row
> number | "end", some data).
>
> Looking at base etc for functions starting "set*" there's some side-effect
> meaning intended there too (setwd, setTimeLimit, set.seed). setdiff and
> setequal are about sets in the collection sense. So it's just setNames as
> a one off really. And we don't use camelCase in data.table, so that's how
> to remember that.
>
> > objects("package:base", pattern="^set")
> [1] "setdiff" "setequal" "setHook"
> [4] "setNamespaceInfo" "set.seed" "setSessionTimeLimit"
> [7] "setTimeLimit" "setwd"
> > objects("package:stats", pattern="^set")
> [1] "setNames"
> > objects("package:utils", pattern="^set")
> [1] "setBreakpoint" "setRepositories" "setTxtProgressBar"
>
> Since other set* functions work on data.frame (set() for example!),
> setnames should too. I was forgetting that. Let's change it then.
>
> Matt
>
>
> Rick
>
>
>
> Matt
>
>
> On 01/10/13 20:51, Ricardo Saporta wrote:
>
> Hi All,
>
> I'm wondering if there are any potential problems or unforseen pitfalls
> with having
>
> setnames(x, nms)
>
> call
> setattr(x, "names", nms)
>
> when x is not a data.table.
>
> Thoughts?
>
> Rick
>
> Ricardo Saporta
> Graduate Student, Data Analytics
> Rutgers University, New Jersey
> e: saporta at rutgers.edu
>
>
>
> _______________________________________________
> datatable-help mailing listdatatable-help at lists.r-forge.r-project.orghttps://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
>
>
>
>
>
> _______________________________________________
> datatable-help mailing listdatatable-help at lists.r-forge.r-project.orghttps://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/datatable-help/attachments/20131002/d14d0816/attachment-0001.html>
More information about the datatable-help
mailing list