[R] Vary an equation using values from a sequence

David L Carlson dcarlson at tamu.edu
Wed Mar 21 15:32:12 CET 2018


It depends a bit on what you plan to do with the results. A loop would be easy and straightforward:

> k <- 1:5
> for(k in 1:5) print(Data - min(Data) + k)
 [1]  1  2  3  4  5  6  7  8  9 10
 [1]  2  3  4  5  6  7  8  9 10 11
 [1]  3  4  5  6  7  8  9 10 11 12
 [1]  4  5  6  7  8  9 10 11 12 13
 [1]  5  6  7  8  9 10 11 12 13 14

Or you can use sapply() to hide the loop:

> sapply(1:5, function(k) Data - min(Data) + k)
      [,1] [,2] [,3] [,4] [,5]
 [1,]    1    2    3    4    5
 [2,]    2    3    4    5    6
 [3,]    3    4    5    6    7
 [4,]    4    5    6    7    8
 [5,]    5    6    7    8    9
 [6,]    6    7    8    9   10
 [7,]    7    8    9   10   11
 [8,]    8    9   10   11   12
 [9,]    9   10   11   12   13
[10,]   10   11   12   13   14

This is more compact if you are planning to save the results, e.g.

> output <- sapply(1:5, function(k) Data - min(Data) + k)

As opposed to using the loop:

> output <- matrix(NA, length(k), length(Data)) for (i in seq_along(k)) 
> output[i, ] <- Data - min(Data) + k[i] output
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    2    3    4    5    6    7    8    9    10
[2,]    2    3    4    5    6    7    8    9   10    11
[3,]    3    4    5    6    7    8    9   10   11    12
[4,]    4    5    6    7    8    9   10   11   12    13
[5,]    5    6    7    8    9   10   11   12   13    14

----------------------------------------
David L Carlson
Department of Anthropology
Texas A&M University
College Station, TX 77843-4352

-----Original Message-----
From: R-help <r-help-bounces at r-project.org> On Behalf Of Jake William Andrae
Sent: Wednesday, March 14, 2018 11:14 PM
To: R-help <r-help at r-project.org>
Subject: [R] Vary an equation using values from a sequence

Hi All,

I have a vector of data on which I am operating. The equation with which I want to operate on the vector has a value k. I want to run the equation and output a new vector, each time replacing k with each value from the sequence I defined. I have thought about using for loops and such, but this seems like overkill. I am wondering if there is a simple solution that would allow me to accomplish this.


The code I am using is outlined below.


Data <- c(1:10) #Data
value <- seq(from = 0, to = 100 , by = 0.01) #Sequence Data - min(Data) + k # Equation

Thanks,
Jake


Jake Andrae
PhD Candidate
Geology & Geophysics   Sprigg Geobiology Centre Department of Earth Science School of Physical Sciences The University of Adelaide, AUSTRALIA 5005
Phone: 0407701565
Email: jake.andrae at adelaide.edu.au


	[[alternative HTML version deleted]]



More information about the R-help mailing list