Message-ID: <f8e6ff050902250630m14ca0901l3932341d85eed7de@mail.gmail.com>
Date: 2009-02-25T14:30:56Z
From: Hadley Wickham
Subject: Have a function like the "_n_" in R ? (Automatic count function )
In-Reply-To: <BBD9C740-2187-4208-9DC6-CC8ACA000A30@comcast.net>
And for completeness here's a function that returns the next integer
on each call.
n <- (function(){
i <- 0
function() {
i <<- i + 1
i
}
})()
> n()
[1] 1
> n()
[1] 2
> n()
[1] 3
> n()
[1] 4
> n()
[1] 5
> n()
[1] 6
;)
Hadley
On Wed, Feb 25, 2009 at 8:27 AM, David Winsemius <dwinsemius at comcast.net> wrote:
> The _n_ construct in SAS is most analogous to that of row names in R,
> accessible (and modifiable) ?via the row.names() function:
>
> DF <- structure(list(Month = structure(c(2L, 2L, 2L, 2L, 1L, 1L, 1L,
> 1L, 3L, 3L, 3L, 3L, 3L), .Label = c("Aug", "July", "Sept"), class =
> "factor"),
> ? ?Week = 27:39, Estpassage = c(665L, 2232L, 9241L, 28464L,
> ? ?41049L, 82216L, 230411L, 358541L, 747839L, 459682L, 609567L,
> ? ?979475L, 837189L), MedFL = c(34L, 35L, 35L, 35L, 35L, 35L,
> ? ?35L, 35L, 35L, 36L, 36L, 36L, 36L)), .Names = c("Month",
> "Week", "Estpassage", "MedFL"), class = "data.frame", row.names = c(NA,
> -13L))
>
> DF$counter <- row.names(DF)
>
>> DF
> ? Month Week Estpassage MedFL counter
> 1 ? July ? 27 ? ? ? ?665 ? ?34 ? ? ? 1
> 2 ? July ? 28 ? ? ? 2232 ? ?35 ? ? ? 2
> 3 ? July ? 29 ? ? ? 9241 ? ?35 ? ? ? 3
> 4 ? July ? 30 ? ? ?28464 ? ?35 ? ? ? 4
> 5 ? ?Aug ? 31 ? ? ?41049 ? ?35 ? ? ? 5
> 6 ? ?Aug ? 32 ? ? ?82216 ? ?35 ? ? ? 6
> 7 ? ?Aug ? 33 ? ? 230411 ? ?35 ? ? ? 7
> 8 ? ?Aug ? 34 ? ? 358541 ? ?35 ? ? ? 8
> 9 ? Sept ? 35 ? ? 747839 ? ?35 ? ? ? 9
> 10 ?Sept ? 36 ? ? 459682 ? ?36 ? ? ?10
> 11 ?Sept ? 37 ? ? 609567 ? ?36 ? ? ?11
> 12 ?Sept ? 38 ? ? 979475 ? ?36 ? ? ?12
> 13 ?Sept ? 39 ? ? 837189 ? ?36 ? ? ?13
>
> Row names, however, not guaranteed to be integer, although if not specified
> at time of creation a dataframe will have its row names set to an ascending
> series of integer type. Another function that would provide similar utility
> for vectors might be seq_along().\, but in the case of dataframes, it may
> confuse the beginning R user because it will return a column oriented
> ascending sequence.
>
>> seq_along(DF)
> [1] 1 2 3 4 5
>
> --
> David Winsemius
>
>
>
> On Feb 25, 2009, at 7:25 AM, Nash wrote:
>
>>
>> Have the counter function in R ?
>>
>> if we use the software SAS
>>
>> /*** SAS Code **************************/
>> data tmp(drop= i);
>> retain seed x 0;
>> do i = 1 to 5;
>> ? ? ? ?call ranuni(seed,x);
>> ? ? ? ?output;
>> end;
>> run;
>>
>> data new;
>> counter=_n_; ?***** this keyword _n_ ****;
>> set tmp;
>> run;
>>
>> /*
>> _n_ (Automatic variables)
>> are created automatically by the DATA step or by DATA step statements.
>> */
>>
>> /*** Output ********************************
>> counter ? ? ?seed ? ? ? ? ? ? x
>> 1 ? ? ? 584043288 ? ? ? ? ? ? ? ?0.27197
>> 2 ? ? ? 935902963 ? ? ? ? ? ? ? ?0.43581
>> 3 ? ? ? 301879523 ? ? ? ? ? ? ? ?0.14057
>> 4 ? ? ? 753212598 ? ? ? ? ? ? ? ?0.35074
>> 5 ? ? ? 1607264573 ? ? ?0.74844
>>
>> ********************************************/
>>
>> Have a function like the "_n_" in R ?
>>
>>
>> --
>> Nash - morrison at ibms.sinica.edu.tw
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> 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
> 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.
>
--
http://had.co.nz/