[R] For each entry type in column?

Boris Steipe boris.steipe at utoronto.ca
Tue Nov 7 00:28:39 CET 2017


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.



More information about the R-help mailing list