Это должно работать для вас.Он использует mutate_if
функцию из dplyr
в tidyverse
, а не в цикле for, но логика та же.
library(tidyverse)
df <- tibble(
a = c(1:10),
b = c(11:20),
c = c(21:30)
)
df1 <- df %>%
mutate_if(is.numeric, function(x) x+1)
Первый аргумент выберет все числовые столбцы в ваших данных,затем второй аргумент определяет функцию, которая в данном случае просто добавляет 1.
РЕДАКТИРОВАТЬ:
Моя начальная функция также добавит 1 к вашему столбцу year
, так что вы можете захотетьсделайте это вместо
library(tidyverse)
df <- tibble(
a = c(1:10),
b = c(11:20),
c = c(21:30)
)
df1 <- df %>%
mutate_at(vars(-matches("a")), function(x) x+1)
За исключением случаев, когда вы хотите заменить "a"
в последней строке на "year"
в вашем коде.