[R] easy question

John Fox jfox at mcmaster.ca
Tue Apr 29 13:27:23 CEST 2003

Dear Fabrizio

At 12:07 PM 4/29/2003 +0200, De Amicis Fabrizio (G.I.T.) wrote:
>Dear R.List,
>I am starting to use R. I have an easy question. In a dataset of 15
>variables, I am not able run correctly the index i of the do loop.
>Do you have any suggestion?
>NC <- function(x)
>     for (i in 1:15) {
>     print(dim(table(dt[,"Vi"])))

The short answer is that you need to paste the number in i to "V" in order 
to create a proper column index. I assume that the columns of dt are named 
"V1", ..., "V15":


Alternatively, you could use something like

     for (i in paste("V",1:15,sep="")) print(dim(table(dt[,i])))

or even more simply, just index the columns by number

     for (i in 1:15) print(dim(table(x[,i])))

Some other points, however:

(1) The argument to your function is x, but you're indexing a variable 
called dt.

(2) A simpler approach to counting the unique elements in each column is

         apply(dt, 2, function(x) length(unique(x)))

(3) Since this apparently applies to a particular matrix or data frame, why 
write a function to perform the operation?

I hope that this helps,

John Fox
Department of Sociology
McMaster University
Hamilton, Ontario, Canada L8S 4M4
email: jfox at mcmaster.ca
phone: 905-525-9140x23604
web: www.socsci.mcmaster.ca/jfox

More information about the R-help mailing list