2016-09-03 2 views
1

Я печатаю важную матрицу xgBoost в журнале с помощью команды записи (запись работает с подключением файлов и направляет ее на stderr). Вот команда, я использую:Различные интервалы во время печати в журнале

importance_matrix <- xgb.importance(names, model=bst) 
write("The top 30 variables are:",stderr()) 
write(paste0("Feature",'\t','\t','Gain','\t','Cover','\t','Frequency'),stderr()) 
write(t(as.matrix(importance_matrix[1:30,])),sep="\t",ncolumns = length(names(importance_matrix)),stderr()) 

Выход поставляется в формате:

Feature   Gain Cover Frequency 
pctTillDate 0.560359696 0.1314074664 0.024278250 
colr_per 0.183149483 0.0962457545 0.049618673 
date 0.050528297 0.1143752021 0.066395735 
GREG_D 0.025648433 0.0381476142 0.018070143 
LNGTD_I 0.020346020 0.0485235001 0.101322109 
LATTD_I 0.019241497 0.0421892270 0.093867103 

, которые делают его выглядеть немного неуклюжим (очень неуклюжи в журнале, чем появляться здесь в SO). Поэтому, чтобы сделать это лучше, я хочу изменить последнюю строку t(as.matrix(importance_matrix[1:30,])),sep="\t" так, чтобы первый sep был 2 вкладками ('\ t', '\ t') и оставил одну вкладку ('\ t'); вместо текущего равномерного интервала. Простой, но поиск не дает никакой идеи. Какие-либо предложения?

+0

Tab разделителям файлы будут выглядеть неровный выход из-за длинами содержания в ячейка, но будьте уверены, равное количество вкладок находится между столбцами. Обратите внимание: текстовые файлы - это просто выходы дампа, используемые для переноса данных или архивирования, поэтому презентация не является целью. – Parfait

+0

@Parfait Я согласен, что это не предназначено для презентации, но в моем случае я делаю 400+ mapper только потоки onoop, а позже хочу объединить все журналы YARN в один журнал. Тогда я хочу сохранить читаемость важного параметра. Или еще 400+ журналов трудно пройти, они неуклюжие просто добавят к агонии анализатора. – abhiieor

ответ

2

Рассмотрим обивки имена столбцов и первый столбец обугленной матрицы с пробелами для выравнивания каждого по наибольшему размеру символов первой колонки:

write.table(importance_matrix, sep="\t", row.names = FALSE, quote = FALSE) 
# Feature Gain Cover Frequency 
# pctTillDate 0.56035970 0.13140747 0.02427825 
# colr_per 0.18314948 0.09624575 0.04961867 
# date 0.05052830 0.11437520 0.06639573 
# GREG_D 0.02564843 0.03814761 0.01807014 
# LNGTD_I 0.02034602 0.04852350 0.10132211 
# LATTD_I 0.01924150 0.04218923 0.09386710 

new_matrix <- importance_matrix 

# FIRST COLUMN LARGEST CHAR LENGTH 
charmax <- max(nchar(new_matrix[,1])) 

# PAD COLUMN HEADERS 
colnames(new_matrix) <- lapply(1:ncol(new_matrix), function(i) 
     paste0(colnames(new_matrix)[i], 
       paste(rep(" ", charmax - nchar(colnames(new_matrix)[i])), collapse="")) 
) 

# PAD FIRST COLUMN 
new_matrix[,1] <- sapply(1:nrow(new_matrix), function(i) 
     paste0(new_matrix[i,1], 
       paste(rep(" ", charmax - nchar(new_matrix[i,1])), collapse="")) 
) 

write.table(new_matrix, sep="\t", row.names = FALSE, quote = FALSE) 
# Feature  Gain  Cover  Frequency 
# pctTillDate 0.56035970 0.13140747 0.02427825 
# colr_per  0.18314948 0.09624575 0.04961867 
# date   0.05052830 0.11437520 0.06639573 
# GREG_D  0.02564843 0.03814761 0.01807014 
# LNGTD_I  0.02034602 0.04852350 0.10132211 
# LATTD_I  0.01924150 0.04218923 0.09386710 
Смежные вопросы