Hi Ivan,

On 3/31/20 06:44, Ivan Calandra wrote:
That's exactly why I was asking if it really is equivalent and if there
are issues using one function or the other

Not that I know. It's mostly a matter of taste and code readability.

Either use the 2D interface:

   ncol(df), colnames(df), df[ , "somecol"], cbind(), etc...

or the list interface:

   length(df), names(df), df[["somecol"]], c(), etc...

to operate on your data.frames. They're equivalent. One advantage of using the latter though is that your code would also work on list objects that are not data.frames. But maybe you don't need or care about that in which case using one interface or the other makes no difference.

Note that the 2D interface is richer because it has nrow(), rownames(), rbind() that are not part of the list interface.

From a code readability point of view I think one should be consistent and avoid mixing the 2 styles. For example IMO using length(df) and colnames(df) in the same function body is not good style. Either use length(df) and names(df), or use ncol(df) and colnames(df). If in the same function body you need to also access the rownames() then it would make sense to stick to the 2D interface throughout the entire body of your function.

Cheers,
H.


--
Dr. Ivan Calandra
TraCEr, laboratory for Traceology and Controlled Experiments
MONREPOS Archaeological Research Centre and
Museum for Human Behavioural Evolution
Schloss Monrepos
56567 Neuwied, Germany
+49 (0) 2631 9772-243
https://urldefense.proofpoint.com/v2/url?u=https-3A__www.researchgate.net_profile_Ivan-5FCalandra&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=yZXfRqVdJeNf73bgLhzIctzOWowNX-0ccnNHdReiprw&s=rSFaISqU4VRbZBhLtnKvwJmxwkKQ0kAN0sIAfSBWUkw&e=

On 31/03/2020 15:39, Eric Berger wrote:
Yes it does because length(list) gives you the number of elements of
the list. And in the case of a data frame object that is the number of
columns, or ncol().

On Tue, Mar 31, 2020 at 4:37 PM Ivan Calandra <calan...@rgzm.de
<mailto:calan...@rgzm.de>> wrote:

     Thanks Eric,

     I know that, but that doesn't really answer my question, does it?

     Ivan

     --
     Dr. Ivan Calandra
     TraCEr, laboratory for Traceology and Controlled Experiments
     MONREPOS Archaeological Research Centre and
     Museum for Human Behavioural Evolution
     Schloss Monrepos
     56567 Neuwied, Germany
     +49 (0) 2631 9772-243
     
https://urldefense.proofpoint.com/v2/url?u=https-3A__www.researchgate.net_profile_Ivan-5FCalandra&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=yZXfRqVdJeNf73bgLhzIctzOWowNX-0ccnNHdReiprw&s=rSFaISqU4VRbZBhLtnKvwJmxwkKQ0kAN0sIAfSBWUkw&e=

     On 31/03/2020 15:26, Eric Berger wrote:
     > A data frame is a special case of a list. It is a list of its
     columns.
     >
     > > is.list( your_data_frame )
     >
     > # TRUE
     >
     >
     > On Tue, Mar 31, 2020 at 4:04 PM Ivan Calandra <calan...@rgzm.de
     <mailto:calan...@rgzm.de>
     > <mailto:calan...@rgzm.de <mailto:calan...@rgzm.de>>> wrote:
     >
     >     Dear useRs,
     >
     >     I have a very simple question:
     >     On a simple data.frame (i.e. each element is a vector),
     ncol() and
     >     length() will give the same result.
     >
     >     Are they just equivalent on such objects, or are they
     differences in
     >     some cases?
     >     Is one of them to be preferred for whatever reason?
     >
     >     Thanks you,
     >     Ivan
     >
     >     --
     >     Dr. Ivan Calandra
     >     TraCEr, laboratory for Traceology and Controlled Experiments
     >     MONREPOS Archaeological Research Centre and
     >     Museum for Human Behavioural Evolution
     >     Schloss Monrepos
     >     56567 Neuwied, Germany
     >     +49 (0) 2631 9772-243
     >     
https://urldefense.proofpoint.com/v2/url?u=https-3A__www.researchgate.net_profile_Ivan-5FCalandra&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=yZXfRqVdJeNf73bgLhzIctzOWowNX-0ccnNHdReiprw&s=rSFaISqU4VRbZBhLtnKvwJmxwkKQ0kAN0sIAfSBWUkw&e=
     >
     >     ______________________________________________
     >     R-help@r-project.org <mailto:R-help@r-project.org>
     <mailto:R-help@r-project.org <mailto:R-help@r-project.org>>
     mailing list --
     >     To UNSUBSCRIBE and more, see
     >     
https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_r-2Dhelp&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=yZXfRqVdJeNf73bgLhzIctzOWowNX-0ccnNHdReiprw&s=RzvpfqevFgNjYNRLX0nYF8un-5x7k-QG5h0465YA7mQ&e=
     >     PLEASE do read the posting guide
     >     
https://urldefense.proofpoint.com/v2/url?u=http-3A__www.R-2Dproject.org_posting-2Dguide.html&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=yZXfRqVdJeNf73bgLhzIctzOWowNX-0ccnNHdReiprw&s=kL6q9dyo4ScG-oZCxbTTWwVV389KO1pOpXMWZWd15bs&e=
     >     and provide commented, minimal, self-contained, reproducible
     code.
     >

     ______________________________________________
     R-help@r-project.org <mailto:R-help@r-project.org> mailing list --
     To UNSUBSCRIBE and more, see
     
https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_r-2Dhelp&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=yZXfRqVdJeNf73bgLhzIctzOWowNX-0ccnNHdReiprw&s=RzvpfqevFgNjYNRLX0nYF8un-5x7k-QG5h0465YA7mQ&e=
     PLEASE do read the posting guide
     
https://urldefense.proofpoint.com/v2/url?u=http-3A__www.R-2Dproject.org_posting-2Dguide.html&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=yZXfRqVdJeNf73bgLhzIctzOWowNX-0ccnNHdReiprw&s=kL6q9dyo4ScG-oZCxbTTWwVV389KO1pOpXMWZWd15bs&e=
     and provide commented, minimal, self-contained, reproducible code.


______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_r-2Dhelp&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=yZXfRqVdJeNf73bgLhzIctzOWowNX-0ccnNHdReiprw&s=RzvpfqevFgNjYNRLX0nYF8un-5x7k-QG5h0465YA7mQ&e=
PLEASE do read the posting guide 
https://urldefense.proofpoint.com/v2/url?u=http-3A__www.R-2Dproject.org_posting-2Dguide.html&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=yZXfRqVdJeNf73bgLhzIctzOWowNX-0ccnNHdReiprw&s=kL6q9dyo4ScG-oZCxbTTWwVV389KO1pOpXMWZWd15bs&e=
and provide commented, minimal, self-contained, reproducible code.


--
Hervé Pagès

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpa...@fredhutch.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to