[R] [FORGED] custom function gives unexpected result - for me

Jeff Newmiller jdnewm|| @end|ng |rom dcn@d@v|@@c@@u@
Sat Apr 18 02:34:23 CEST 2020


A different solution:

grr2 <- function( rn ) {
  f <- function( i ) {
    if ( 0 == i %% 2 ) seq.int( i )
    else seq( i, 1 )
  }
  L <- lapply( seq.int( rn - 1 ), f )
  do.call( c, L )
}

On April 17, 2020 5:11:40 PM PDT, Jeff Newmiller <jdnewmil using dcn.davis.ca.us> wrote:
>A useful help page:
>
>?Syntax
>
>On April 17, 2020 4:26:19 PM PDT, Rolf Turner <r.turner using auckland.ac.nz>
>wrote:
>>
>>
>>The answer is very simple:  parentheses.  (Also think about "operator 
>>precedence".) If you assign rn <- 3, then 1:rn-1 is:
>>
>>[1] 0 1 2
>>
>>The "-" operator is applied *after*  the ":" operator.
>>
>>You want 1:(rn-1) which gives
>>
>>[1] 1 2
>>
>>and the desired result.
>>
>>cheers,
>>
>>Rolf Turner
>>
>>On 18/04/20 7:55 am, Monica Palaseanu-Lovejoy wrote:
>>> Hi,
>>> 
>>> I wrote a relatively simple function. If i run the code inside the
>>function
>>> line by line i am getting the result i was expecting, but if i run
>>the
>>> function, i get a different result.
>>> 
>>> The function:
>>> 
>>> grr1 <- function(rn) {
>>> r.up <- c()
>>> for (i in 1:rn-1) {
>>> if (i%%2==0) ru <- seq(1,i) else ru <- seq(i,1)
>>> r.up <- c(r.up, ru)
>>> }
>>> return(r.up)
>>> }
>>> 
>>> So, if rn is 3 for example i would expect to get 1 1 2
>>> 
>>> grr1(3)
>>> [1] 1 0 1 1 2
>>> 
>>> If i run it line by line inside the function:
>>> r.up <- c()
>>>> r.up
>>> NULL
>>> 
>>> i=1
>>> if (i%%2==0) ru <- seq(1,i) else ru <- seq(i,1)
>>>> ru
>>> [1] 1
>>> 
>>> r.up <- c(r.up, ru)
>>> r.up
>>> [1] 1
>>> 
>>> i=2
>>> if (i%%2==0) ru <- seq(1,i) else ru <- seq(i,1)
>>> ru
>>> [1] 1 2
>>> r.up <- c(r.up, ru)
>>>> r.up
>>> [1] 1 1 2
>>> 
>>> So - i am getting the result i am expecting. From where the 1 0
>>before what
>>> i expect as a result comes from? I am sure i am doing some very
>basic
>>> error, but it seems i cannot figure it out.
>>> 
>>> I run R x64  3.2.6. I know it is not the latest version, but it
>>should not
>>> give me unexpected results because of that i would think.
>>> 
>>> sessionInfo()
>>> R version 3.6.2 (2019-12-12)
>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>> Running under: Windows 10 x64 (build 17763)
>>> 
>>> Matrix products: default
>>> 
>>> locale:
>>> [1] LC_COLLATE=English_United States.1252
>>> [2] LC_CTYPE=English_United States.1252
>>> [3] LC_MONETARY=English_United States.1252
>>> [4] LC_NUMERIC=C
>>> [5] LC_TIME=English_United States.1252
>>> 
>>> attached base packages:
>>> [1] stats     graphics  grDevices utils     datasets  methods   base
>>> 
>>> loaded via a namespace (and not attached):
>>> [1] compiler_3.6.2
>>> 
>>> Thanks,
>>> Monica
>>
>>______________________________________________
>>R-help using 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.

-- 
Sent from my phone. Please excuse my brevity.



More information about the R-help mailing list