Я пытаюсь использовать lapply
, чтобы обрезать некоторые из моих данных. То, что я пытаюсь сделать, это обрезать столбцы 2:4
(удаляя выбросы или экстремальные значения), а также удалять строки в столбцах.
Некоторые данные с выбросами в каждом столбце. Поэтому я хочу удалить значения 100
и -100
в V1
, но также удалить всю строку в данных. Также удаляются значения 80
и -80
в столбце V2
- впоследствии также удаляется и эта строка.
trimdata <- NULL
trimdata$ID <- seq.int(102)
trimdata$V1 <- c(rnorm(100), 100, -100)
trimdata$V2 <- c(rnorm(100), 80, -80)
trimdata$V3 <- c(rnorm(100), 120, -120)
trimdata <- as.data.frame(trimdata)
library(DescTools)
trimdata <- lapply(trimdata, function(x) Trim(x, trim = 0.01))
trimdata <- as.data.frame(trimdata)
Приведенный выше код применяет функцию ко всем столбцам (исключая крайние значения в столбце ID)
Этот код:
trimdata[2:4] <- lapply(trimdata[2:4], function(x) Trim(x, trim = 0.01))
Возвращает следующую ошибку
Error in `[<-.data.frame`(`*tmp*`, 2:4, value = list(V1 = c(0.424725933773568, :
replacement element 1 has 98 rows, need 100
Поэтому я пытаюсь обрезать столбцы 2: 4, но также применяю его к столбцу 1.