Выровнять по правому краю символьный столбец в консоли R - PullRequest
0 голосов
/ 11 мая 2019

У меня есть фрагменты текста, разделенные на три столбца. Я хотел бы отобразить эти три столбца в формате KWIC в консоли R для быстрого «визуального анализа». Для этого первый столбец должен быть выровнен по правому краю, средний - по центру, а третий столбец - по левому краю.

Вот некоторые примеры данных, демонстрирующих проблему:

concordance1 <- c("Well it's not that easy as you can tell I was trying to work out how this", "is working", "but I can't say I understand yet")
concordance2 <- c("they've just", "been having", "more and more trouble")
concordance3 <- c(" sorry I wasn't really engaging Um I", "was thinking", "back to like youth club days...")
data <- as.data.frame(rbind(concordance1, concordance2, concordance3))

Если я просто распечатываю данные, все три столбца выровнены по левому краю, а R отображает строки согласования в нескольких строках, так что это абсолютно неразборчиво.

data

Пока что я могу найти тибл-дисплей. Он регулирует ширину таблицы под мой дисплей консоли (см. Скриншот), что является улучшением. Это только начало, но для того, чтобы быстро проанализировать эти соответствия, мне нужно иметь возможность выровнять по правому краю первый столбец на табло.

Снимок экрана Tibble

Я благодарен за любые советы о том, как это может быть достигнуто. Спасибо!

1 Ответ

1 голос
/ 11 мая 2019

Вы можете попробовать это:

print(mapply(format, data, justify=c("right", "centre", "left")), quote=F)

EDIT:

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

format.kwic <- function(data, width=20) {
    trunc <- function(x, n=20) {
        x <- as.character(x)
        w <- nchar(x)
        ifelse(w > n, paste0("\U2026", substring(x, w-n, w)), x)
    }
    data[,1] <- trunc(data[,1], n=width)
    mapply(format, data, justify=c("right", "centre", "left"))
}
print(format.kwic(data), quote=F)

Выход:

##      V1                     V2           V3                              
## [1,] … to work out how this  is working  but I can't say I understand yet
## [2,]           they've just been having  more and more trouble           
## [3,] … really engaging Um I was thinking back to like youth club days...
...