Р: Глядя на большой список - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь визуально отсканировать большой список перед преобразованием его элементов в соответствующие объекты R.Список состоит из 869 элементов, каждый из которых представляет собой фрагмент длины два.Векторы Tibble имеют длину 0, если значения являются истинными числами, но такие векторы иногда имеют специальные значения, обозначающие верхнее кодирование, а не в юниверсе, пропущенные записи, «Неизвестно», такие как «90 или выше» для возраста и тому подобное.Многие переменные являются фактороподобными и имеют длину от 2 до 498. Значения этих переменных являются целыми числами, но они не всегда последовательно или равномерно распределены.Иногда уровни также обозначают специальные значения, такие как упомянутые ранее, которые в некоторых случаях, вероятно, нуждаются в лечении, отличном от простых уровней факторов.Кроме того, некоторые факторные переменные состоят из символьных строк, которые содержат числовые диапазоны, которые я предпочел бы представлять в виде числовых точек отсечения, например, «100 000 - 249 999» для диапазона размера популяции.

Средство просмотра RStudio не подходит для просмотра этого объекта, во-первых, потому что он устанавливает максимальную ширину поля, слишком узкую, чтобы видеть все некоторые важные поля, а во-вторых, из-за усечения векторов факторных объектов, и в-третьих, потому что все тиблы свернуты.по умолчанию, если только он не открыт вручную.

Лучшее, что я смог сделать до сих пор, - это сохранить строку выходных данных со всеми параметрами и опциями, максимизированными.Мой код ниже.Хотя я указал максимальные длины, которые должны позволять просматривать целые векторы, некоторые все еще усекаются.Я установил comp.str в "," в надежде создать что-то, похожее на csv, но, похоже, оно вставляется только между столбцами, а не между столбцами столбцов или элементами векторов столбцов.Я также играл с печатью в текстовом файле, но горизонтальный формат значительно затрудняет визуальное сканирование большого числа переменных, хотя и решает проблему усечения.

big_str <- function(X, pth){
  sink(file = pth)
  str(X, vec.len = 500, digits.d = 5, nchar.max =200, give.attr = TRUE, 
      give.length = TRUE, comp.str = ", ", list.len =500)
  sink()
}

Я предоставляю список, показывающийнесколько иллюстративных переменных в виде dput ниже, сопровождаемых иллюстрацией отображения этих переменных, импортированных в электронную таблицу LibreOffice Calc и затем вставленных сюда.Они не отображают усечение векторов, поскольку это происходит только на длинах, которые были бы громоздкими.Выражения типа «6 объектов 2 переменных» заканчиваются в своей ячейке электронной таблицы;в противном случае все, что показано в строке, происходит из одной ячейки.dput:

list(structure(list(val = c(0, 1, 2, 3, 4, 5), lbl = c("NIU, or not changed.", 
    "State and below assigned", "County and below assigned", "MCD and below assigned", 
    "County in New York City", "Place only")), class = c("tbl_df", 
    "tbl", "data.frame"), row.names = c(NA, -6L)), structure(list(
        val = c(0, 1, 2, 3, 4), lbl = c("NIU, or not changed", "Migration status assigned from householder", 
        "Migration status assigned from spouse", "Migration status allocated from matrix mob", 
        "Migration status assigned from parents")), class = c("tbl_df", 
    "tbl", "data.frame"), row.names = c(NA, -5L)), structure(list(
        val = c(0, 1, 2, 3), lbl = c("No change or children", "Allocated", 
        "County and below assigned", "State and below assigned")), class = c("tbl_df", 
    "tbl", "data.frame"), row.names = c(NA, -4L)))

Электронная таблица:

, QMIGRAT1G   :Classes ‘tbl_df’, ‘tbl’ and 'data.frame':    6 obs. of  2 variables:
  ..$ val: num [1:6] 0 1 2 3 4 5    
  ..$ lbl: chr [1:6] "NIU, or not changed." "State and below assigned" "County and below assigned" "MCD and below assigned" "County in New York City" "Place only"  
 , QMIGRAT1    :Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   5 obs. of  2 variables:
  ..$ val: num [1:5] 0 1 2 3 4  
  ..$ lbl: chr [1:5] "NIU, or not changed" "Migration status assigned from householder" "Migration status assigned from spouse" "Migration status allocated from matrix mob" "Migration status assigned from parents"   
 , QMIGST1A    :Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   4 obs. of  2 variables:
  ..$ val: num [1:4] 0 1 2 3    
  ..$ lbl: chr [1:4] "No change or children" "Allocated" "County and below assigned" "State and below assigned"

Мне нужно следующее:

  1. , чтобы исключить оставшееся усечение значения переменной и векторов меток;
  2. , чтобы отделить морфемы str таким образом, чтобы это помогло в анализе.В контексте отображения электронных таблиц это будет означать, что сначала числовые и символьные векторы разделяются на отдельные ячейки для каждого значения, а не рассматриваются как одна длинная символьная строка;и
  3. для размещения значимых компонентов отображения str, таких как имя тибла, имена, длины и типы векторов тибла, в отдельных ячейках.

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

...