Почему я получаю разные результаты для двух функций с одинаковыми логами c? Где ошибка? - PullRequest
1 голос
/ 08 апреля 2020

У меня есть df с 50 столбцами (X1, X2, X3 и т. Д. c.), Каждый из которых содержит оценки различных вопросов.

Небольшая версия:

    X1  X2  X3  X4
1   10  15  17  12
2   5   2   5   5
3   15  20  10  16
4   10  15  15  20

Я хочу вычислить log10() каждой оценки и затем вычесть медиану журналов для каждого вопроса.

Например, для вопроса 1: сумма (log (X1) -median1) / 4)

Я использовал следующий синтаксис для l oop над столбцами:

s <- vector("integer", ncol(df))
for(i in seq_along(df)) {
  s[[i]] <- sum(log10(df[[i]]) - median(log10(df[[i]])/4))

Но если я проверю В результате, например, для X1, я получаю другое значение:

s1 <- df %>% mutate(log_e = log10(X1)) %>%
    summarize(s = sum(log_e - median(log_e))/4)

В первой команде это 2.88, а во второй -0.0312.

Где ошибка?

1 Ответ

2 голосов
/ 08 апреля 2020

вам не хватило скобок

apply(df, 2, function(x) mean(log10(x) - median(log10(x))))

s <- vector("integer", ncol(df))
for(i in seq_along(df)){
  s[[i]] <- (sum(log10(df[[i]]) - median(log10(df[[i]])))/ 4)
}

s <- vector("integer", ncol(df))
for(i in seq_along(df)){
  s[[i]] <- mean(log10(df[[i]]) - median(log10(df[[i]])))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...