Как исправить в r: dim(x) должен иметь положительную длину


Ошибка, с которой вы можете столкнуться в R:

 Error in apply(df$var1, 2, mean): dim(X) must have a positive length 

Эта ошибка возникает, когда вы пытаетесь использовать функцию apply() для вычисления метрики для столбца фрейма данных или матрицы, предоставляя в качестве аргумента вектор вместо фрейма данных или матрицы.

В этом руководстве объясняется, как именно исправить эту ошибку.

Как воспроизвести ошибку

Предположим, у нас есть следующий кадр данных в R:

 #create data frame
df <- data. frame (points=c(99, 97, 104, 79, 84, 88, 91, 99),
                 rebounds=c(34, 40, 41, 38, 29, 30, 22, 25),
                 blocks=c(12, 8, 8, 7, 8, 11, 6, 7))

#view data frame
df

  points rebound blocks
1 99 34 12
2 97 40 8
3 104 41 8
4 79 38 7
5 84 29 8
6 88 30 11
7 91 22 6
8 99 25 7

Теперь предположим, что мы пытаемся использовать функцию apply() для расчета среднего значения в столбце «пункты»:

 #attempt to calculate mean of 'points' column
apply(df$points, 2, mean)

Error in apply(df$points, 2, mean): dim(X) must have a positive length

Ошибка возникает, поскольку функцию apply() необходимо применить к фрейму данных или матрице, но в этом примере мы пытаемся применить ее к определенному столбцу фрейма данных.

Как исправить ошибку

Чтобы исправить эту ошибку, просто укажите имя фрейма данных в функции apply() следующим образом:

 #calculate mean of every column in data frame
apply(df, 2, mean)

  points rebound blocks 
  92,625 32,375 8,375 

Из выходных данных мы можем увидеть среднее значение каждого столбца во фрейме данных. Например, среднее значение графы «баллы» — 92 625 .

Мы также можем использовать эту функцию, чтобы найти только среднее значение определенных значений во фрейме данных:

 #calculate mean of 'points' and 'blocks' column in data frame
apply(df[c(' points ', ' blocks ')], 2, mean)

point blocks 
92,625 8,375

Наконец, если мы хотим найти среднее значение для одного столбца, мы можем использовать функцию Mean() вообще не используя функцию apply() :

 #calculate mean of 'points' column
mean(df$points)

[1] 92,625

Дополнительные ресурсы

В следующих руководствах объясняется, как устранить другие распространенные ошибки в R:

Как исправить в R: Имена не совпадают с предыдущими именами
Как исправить в R: длина более длинного объекта не кратна длине более короткого объекта
Как исправить в R: контрасты можно применять только к факторам с 2 и более уровнями

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *