Reste una columna en un dataframe de muchas columnas en R

Tengo un dataframe. Me gustaría restar la 2da columna de todas las demás columnas. Puedo hacerlo en un bucle, pero me gustaría hacerlo en una sola llamada. Aquí está mi código de bucle de trabajo:

df <- data.frame(x = 100:101, y = 2:3,z=3:4,a = -1:0,b=4:5) for( i in 3:length(df) ) { df[i] <- df[i] - df[2] } 

Si necesita restar las columnas 3:ncol(df) de la segunda columna

 df[3:ncol(df)] <- df[3:ncol(df)]-df[,2] 

Esto también funcionaría: devuelve las 9 columnas de las que restaste el segundo.

  df = data.frame(matrix(rnorm(100,0,1),nrow = 10)) df[,-2] - df[,2]