R: Символьные переменные должны быть продублированы в .C /. Фортран - PullRequest
3 голосов
/ 03 марта 2011

Я пытаюсь использовать пакет leaps. Этот фрейм данных df имеет 9 столбцов. Столбцы 2–8 являются пояснительными переменными, а столбец 9 - переменной отклика. df также имеет имена (столбцы).

Когда я пытаюсь использовать пакет leaps, я получаю загадочную ошибку.

x <- df[,2:8]
y <- df[,9]
leaps <- regsubsets(x, y)
Error in leaps.setup(x, y, wt = weights, nbest = nbest, nvmax = nvmax,  : 
  character variables must be duplicated in .C/.Fortran

Что означает эта ошибка, и как я могу предотвратить это?

Вот фрагмент data.frame:

> dput(df[1:2,])
structure(list(Var1 = c(2396, 2396), Var2 = c(NA_character_, 
NA_character_), Var3 = c(NA_character_, NA_character_), Var4 = c(501, 
511), Var5 = c(5, 5), Var6 = c(13, 8), Var7 = c(NA_real_, NA_real_
), Var8 = c(NA_real_, NA_real_), Var9 = c(0.0047, 0.0371)), .Names = c("Var1", 
"Var2", "Var3", "Var4", "Var5", "Var6", "Var7", "Var8", "Var9"
), row.names = 1:2, class = "data.frame")

> str(df)
'data.frame':   10000 obs. of  9 variables:
 $ Var1: num  2396 2396 2396 2396 2396 ...
 $ Var2: chr  NA NA NA NA ...
 $ Var3: chr  NA NA NA NA ...
 $ Var4: num  501 511 523 757 770 803 803 803 807 506 ...
 $ Var5: num  5 5 3 5 1 1 5 5 5 5 ...
 $ Var6: num  13 8 13 11 13 8 13 8 11 11 ...
 $ Var7: num  NA NA NA NA NA NA NA NA NA NA ...
 $ Var8: num  NA NA NA NA NA NA NA NA NA NA ...
 $ Var9: num  0.0047 0.0371 0.042 0.0488 0.0048 ...

Я попытался заменить отсутствующие значения на 0, чтобы посмотреть, сработает ли это, и это не помогло.

1 Ответ

5 голосов
/ 03 марта 2011

Я совсем не знаком с leaps, но могу воспроизвести вашу проблему.Я думаю, что проблема в том, что одна из переменных является либо символом, либо фактором:

library("leaps")
df <- data.frame( foo = 1:10, bar = as.factor(1:10), resp = 1:10)
regsubsets(df[,-3],df[,3])

Выдает ошибку.Обратите внимание, что bar здесь является фактором:

sapply(df,is.factor)
  foo   bar  resp 
FALSE  TRUE FALSE 

Приведение к числовой ошибке исчезло:

df$bar <- as.numeric(as.character(df$bar))
regsubsets(df[,-3],df[,3])

Это дает другие предупреждения, но это, вероятно, связано с набором глупых данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...