[R] For each entry type in column?

Bert Gunter bgunter.4567 at gmail.com
Tue Nov 7 00:47:40 CET 2017


Boris:

"As others have remarked, for added efficiency with large datasets we often
use functions from the apply() family, rather than for-loops."

That is generally false, though it is a common misconception. Apply-type
functions are used to maintain fidelity -- and for some, clarity -- to a
functional programming paradigm.

Cheers,
Bert



Bert Gunter

"The trouble with having an open mind is that people keep coming along and
sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )

On Mon, Nov 6, 2017 at 3:28 PM, Boris Steipe <boris.steipe at utoronto.ca>
wrote:

> Matti -
>
> Since you are asking about looping through a column, not looping across
> columns, it is simply the following:
>
>
> # Note: data.frame() turns strings into factors by default.
> myDF <- data.frame(type = c("a", "j", "a", "a", "j"),
>                    weight = c(12.3, 6.8, 10.5, NA, "5.5"))
>
> myDF$type  # ... is a vector of factors
>
> for(type in myDF$type) {
>   print(type)
> }
>
> # or (less explicit in the code and will break if the order of columns
> # ever changes):
> for(type in myDF[ , 1]) {
>   print(type)
> }
>
> # In a matrix, all elemnts have to be of the same type. Let's make a
> # matrix of characters:
>
> myMat <- matrix(cbind(as.character(myDF$type),
>                       c("red", "green", "red", "red", "green")),
>                 ncol = 2)
>
> for(type in myMat[ , 1]) {
>   print(type)
> }
>
> As others have remarked, for added efficiency with large datasets we often
> use functions from the apply() family, rather than for-loops.
>
>
> I hope this helps,
> Boris
>
> PS: don't call your data frames "df" since df() is a function and this may
> make your code hard to read.
>
>
>
> > On Nov 6, 2017, at 2:49 PM, Rui Barradas <ruipbarradas at sapo.pt> wrote:
> >
> > Hello,
> >
> > If you want to loop through the columns of a data.frame you can do
> >
> > for(i in names(df)){
> >    [code]
> > }
> >
> > Another way would be
> >
> > lapply(names(df), function(somecol) class(df[[somecol]]))
> >
> > where class(df[[somecol]]) is just an example, you would use whatever
> fits your needs.
> >
> > When you say that the column in question holds "levels" do you mean it's
> a factor? (factors are R's categorical variables.)
> >
> > Hope this helps,
> >
> > Rui Barradas
> >
> >
> > Em 06-11-2017 19:26, Matti Viljamaa escreveu:
> >> It’s sometimes faster to ask from someone who has already learnt the
> syntax.
> >> In this case one has to do e.g.
> >>
> >> names(data$somecol)
> >>
> >> To get the collection and then iteration through it is almost like in
> Python:
> >>
> >> for(i in names(data$somecol)) {
> >>    # do something
> >> }
> >>
> >>> Bert Gunter <bgunter.4567 at gmail.com> kirjoitti 6.11.2017 kello 19.55:
> >>>
> >>> Time to go through a tutorial or two! -- This forum cannot replace
> such self study.
> >>>
> >>> Your query evidences some basic confusion, but ?tapply or the
> equivalent lapply(split(...)) construct are most likely relevant.
> >>>
> >>> Cheers,
> >>> Bert
> >>>
> >>>
> >>>
> >>> Bert Gunter
> >>>
> >>> "The trouble with having an open mind is that people keep coming along
> and sticking things into it."
> >>> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
> >>>
> >>> On Mon, Nov 6, 2017 at 9:40 AM, mviljamaa <mviljamaa at kapsi.fi <mailto:
> mviljamaa at kapsi.fi>> wrote:
> >>> How can I do a for loop that does to a data.frame column what:
> >>>
> >>> for x in xs:
> >>>
> >>> does in Python?
> >>>
> >>> Obviously the data.frame column in question holds "levels". What if
> the data.frame is in matrix form?
> >>>
> >>> BR, Matti
> >>>
> >>> ______________________________________________
> >>> R-help at r-project.org <mailto:R-help at r-project.org> mailing list -- To
> UNSUBSCRIBE and more, see
> >>> https://stat.ethz.ch/mailman/listinfo/r-help <
> https://stat.ethz.ch/mailman/listinfo/r-help>
> >>> PLEASE do read the posting guide http://www.R-project.org/
> posting-guide.html <http://www.r-project.org/posting-guide.html>
> >>> and provide commented, minimal, self-contained, reproducible code.
> >>>
> >>
> >>
> >>      [[alternative HTML version deleted]]
> >>
> >> ______________________________________________
> >> R-help at 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.
> >>
> >
> > ______________________________________________
> > R-help at 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.
>
> ______________________________________________
> R-help at 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.

	[[alternative HTML version deleted]]



More information about the R-help mailing list