R Как я могу исправить ошибку DataExplorer во время PCA: «Элемент 2 не имеет длины» - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть набор данных df с 102 переменными: 16 int, 80 факторов, 8 logi.Там нет значений NA.

Я раньше использовал DataExplorer без проблем, но когда я запустил его на этом наборе данных ...

library(DataExplorer)
create_report(df)

... он медленно сдавался,вывод его прогресса ...

# label: correlation_analysis
#   |................................................                 |  74%
#   ordinary text without R code

... до тех пор, пока он не попадет в секцию PCA, когда возникла эта ошибка:

#  |..................................................               |  76%
# label: principle_component_analysis
# Quitting from lines 208-221 (report.rmd) 
#
# Error in data.table(pc = paste0("PC", seq_along(pca$sdev)), var = var_exp,  : 
#  Item 2 has no length. Provide at least one item (such as NA, NA_integer_ etc) to be repeated to match the 1 row in the longest column. Or, all columns can be 0 length, for insert()ing rows into. 

Я погуглил эту ошибку, но нашел только страницы, объясняющиеСпс а не эта ошибка.Любые предложения?

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10 * * * * * * * * * * * * * 10 * * * * * * * * 10 * * * 10 * *.of вводить (df_dummified) в соответствии с просьбой в комментариях ниже:

A tibble: 1 x 9  
 rows columns discrete_columns continuous_columns  
<int>   <int>            <int>              <int>  
 9527     489                2                487  

all_missing_columns total_missing_values  
              <int>                <int>  
                  0                 7826  

complete_rows total_observations memory_usage  
        <int>              <int>        <dbl>  
         6889            4658703     18919440  

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Вы могли бы также рассмотреть возможность пропустить часть отчета PCA, удалив "plot_prcomp" из конфигурации create_report ().

У меня была та же проблема, и это все еще создало остальную часть отчета для меня:

library(DataExplorer)

config <- list(
  "introduce" = list(),
  "plot_str" = list(
    "type" = "diagonal",
    "fontSize" = 35,
    "width" = 1000,
    "margin" = list("left" = 350, "right" = 250)
  ),
  "plot_missing" = list(),
  "plot_histogram" = list(),
  "plot_qq" = list(sampled_rows = 1000L),
  "plot_bar" = list(),
  "plot_correlation" = list("cor_args" = list("use" = "pairwise.complete.obs")),
#  "plot_prcomp" = list(),
  "plot_boxplot" = list(),
  "plot_scatterplot" = list(sampled_rows = 1000L)
)

create_report(df, config = config)
0 голосов
/ 25 ноября 2018

PCA можно применять только для числовых данных.Рассмотрите только числовые столбцы для PCA, удалите столбцы, отличные от числовых.

nums <- unlist(lapply(df, is.numeric))
df_new <- df[, nums]

Удалите все столбцы, которые имеют постоянную дисперсию.

df_new <- df_new[, apply(df_new, 2, var) != 0]

Ссылка: Как решить prcomp.default (): невозможно изменить масштаб столбца с константой / нулем до единичной дисперсии

Теперь запустите это.Это должно создать хороший HTML-отчет для вас.

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