От новичка до гуру: Курсы программирования на CyberDuff

Как удалить выбросы из списка векторов?

У меня есть такой список векторов:

tdatm.sp=structure(list(X3CO = c(24.88993835, 25.02366257, 24.90308762
), X3CS = c(25.70629883, 25.26747704, 25.1953907), X3CD = c(26.95723343, 
26.84725571, 26.2314415), X3CSD = c(36.95250702, 36.040905, 36.90475845
), X5CO = c(25.44123077, 24.97585869, 24.86075592), X5CS = c(25.71570396, 
26.10244179, 25.39032555), X5CD = c(27.67508507, 27.18985558, 
26.93682098), X5CSD = c(36.26528549, 34.88553238, 33.97910309
), X7CO = c(24.7142601, 24.08443642, 23.97057915), X7CS = c(24.55734444, 
24.56562042, 24.7589817), X7CD = c(27.14260101, 26.65704346, 
26.49533081), X7CSD = c(33.89881897, 32.91091919, 32.79199219
), X9CO = c(26.86141014, 26.42648888, 25.8350563), X9CS = c(28.17367744, 
27.27400589, 26.58813667), X9CD = c(28.88915062, 28.32597542, 
28.2713623), X9CSD = c(34.61352158, 35.84189987, 35.80329132)), .Names = c("X3CO", 
"X3CS", "X3CD", "X3CSD", "X5CO", "X5CS", "X5CD", "X5CSD", "X7CO", 
"X7CS", "X7CD", "X7CSD", "X9CO", "X9CS", "X9CD", "X9CSD"))

> head(tdatm.sp)
$X3CO
[1] 24.88994 25.02366 24.90309

$X3CS
[1] 25.70630 25.26748 25.19539

$X3CD
[1] 26.95723 26.84726 26.23144

$X3CSD
[1] 36.95251 36.04091 36.90476

$X5CO
[1] 25.44123 24.97586 24.86076

$X5CS
[1] 25.71570 26.10244 25.39033

Я хотел бы удалить выбросы из каждого отдельного вектора с помощью метода Хампеля.

Я нашел один из способов сделать это:

repoutliers=function(x){ med=median(x); mad=mad(x); x[x>med+3*mad | x<med-3*mad]=NA; return(x)}
lapply(tdatm.sp, repoutliers)

Но мне было интересно, можно ли сделать это, не объявляя новую функцию, прямо в lapply. lapply отправляет каждый отдельный вектор репутационным функциям, знаете ли вы, как работать с этими отдельными векторами непосредственно в lapply? Скажем, я поменял местами репутацию с функцией «заменить», я мог бы сделать то же слово, вызвав отдельные векторы в аргументах replace (lapply (X, FUN, ...); ... = заменить аргументы).

Вкратце: как управлять отдельными векторами lapply, отправленными в функцию winthin lapply?

25.07.2013

  • Почему вы хотите сделать это, не создавая новую функцию? 25.07.2013
  • Я думал, что мы можем вызывать переданные переменные напрямую, без использования новой функции, я думал, что это будет полезно для меня в будущем, но, похоже, это невозможно. 25.07.2013

Ответы:


1

Это действительно более или менее похоже на томатное томатое. Выполнение всего этого по-лаппински далеко не уедет.

lapply( tdatm.sp, function(x){ 
    med=median(x)
    mad=mad(x)
    x[x>med+3*mad | x<med-3*mad]=NA
    return(x)} )

Теперь lapply просто отправляет все анонимной функции. Но если вы не хотите, чтобы функция оставалась после этого, это удобный синтаксис.

25.07.2013
  • о, хорошо, я вижу, что нет вызываемой переменной для прямого доступа к отдельным векторам без прохождения через функцию 25.07.2013
  • Новые материалы

    Представляем Narwhal Technologies (Nrwl)
    6 декабря 2016 г. Маунтин-Вью, Калифорния С тех пор, как Виктор Савкин и я (Джефф Кросс) присоединились к команде Angular в Google на заре Angular 1, Angular продемонстрировал феноменальный..

    Путь AWS  — «Изучение машинного обучения — 10 начинающих ИИ и машинного обучения на AWS».
    Универсальный ресурсный центр для изучения искусственного интеллекта и машинного обучения. НОЛЬ или ГЕРОЙ, начните свое путешествие здесь. Получите решения и пройдите обучение у экспертов AWS...

    5 простых концепций Python, ставших сложными
    #заранее извините 1) Переменные x = 4 y = 5 Переменная в Python — это символическое представление объекта. После присвоения некоторого объекта переменной Python мы приобретаем..

    «Освоение вероятности: изучение совместной, предельной, условной вероятности и теоремы Байеса —…
    Виды вероятности: Совместная вероятность Предельная вероятность Условная вероятность Диаграмма Венна в вероятностях: В “Set Theory” мы создаем диаграмму Венна...

    Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
    Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

    Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
    Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..