0

How can i apply the following function rt on each and every value l in df. x and y have the following values.

 x<-9
 y<-1

rt<-function(x,y,l) min(x,max(0,l-y))

df
a   b   c
5   6   7
1   4   1
2   4   3
HaagenDaz
  • 411
  • 5
  • 15

1 Answers1

2

Probably simplest if you'd like to stick with dataframes is to use apply with the MARGIN parameter set to c(1,2), which makes it apply the function by both rows and columns (i.e., to every cell).

x <- 9
y <- 1

rt <- function(x, y, l) min(x, max(0, l-y))

df <- data.frame(a = c(5, 1, 2),
                 b = c(6, 4, 4),
                 c = c(7, 1, 3))

rt_df <- as.data.frame(apply(df, c(1,2), rt, x = x, y = y))
MichaelChirico
  • 33,841
  • 14
  • 113
  • 198
lune
  • 48
  • 1
  • 4