Ошибка R psych :: statsBy(): «‘x’ должен быть числовым»

#correlation #numeric #multi-level #psych

#корреляция #числовой #многоуровневый #psych

Вопрос:

Я пытаюсь выполнить многоуровневый факторный анализ, используя пакет «psych». На первом шаге рекомендуется использовать функцию statsBy () для получения данных корреляции:

statsBy(study2, group = «ID»)

Однако это выдает следующую «Ошибку в FUN (data [x, , drop = FALSE], …): ‘x’ должен быть числовым«.

Для набора данных я включил только группирующую переменную «ID» и две другие числовые переменные. Я запустил следующую строку, чтобы проверить, являются ли переменные числовыми.

sapply(study2, is.numeric)

  ID     v1      V2 
  

ЛОЖЬ ИСТИНА ИСТИНА

Вот код в трассировке ошибки.Но я не знаю, что здесь означает ‘x’, и я заметил, что в строках 8 и 9 X находится в заголовке и в нижнем регистре в строке 10.

* 10. FUN(данные [x, , drop = FALSE], …)

9. FUN(X[[i]], …)

8. lapply(X = ans [index], FUN = FUN, …)

7. tapply(seq_len(728L), список (z = c(«5edfa35e60122c277654d35b», «5ed69fbc0a53140e516ad4ed», «5d52e8160ebbe900196e252e», «5efa3da57a38f213146c7352», «5ef98f3df4d541726b1bcc48», «5debb7511e806c2a59cad664», «5c28a4530091e40001ca4d00», «5872a0d958ca4c00018ce4fe», «5c87868eddda2d00012add18», «5e80b7427567f07891655e7e», …

6. вычисление(замена(tapply(seq_len(nd), IND, FunX, упростить = упростить)), данные)

5. вычисление(замена(tapply(seq_len(nd), IND, FunX, упростить = упростить)), данные)

4. структура(eval(substitute(tapply(seq_len(nd), IND, FunX, simplify = упростить)), данные), вызов = match.call(), класс = «by»)

3. by.data.frame(данные, z, colMeans, na.rm = na.rm)

2. по (данные, z, значения, na.rm = na.rm)

1. statsBy(study2, group = «ID»)*

Набор данных содержит 728 строк, и такие строки, как «5edfa35e60122c277654d35b», являются идентификаторами. Кто-нибудь может помочь объяснить, что могло пойти не так?

Ответ №1:

У меня была та же ошибка, единственным способом было преобразовать групповую переменную в числовой класс.

Попробуйте:

 study2$ID<-as.numeric(study2$ID)
statsBy(study2, group = "ID")
  

Если dat$ID имеет характер класса:

 study2$ID<-as.numeric(as.factor(study2$ID))
statsBy(study2, group = "ID")