Можно ли изменить формат столбца с помощью функции sprintf?

Я работаю с инструментом Rmarkdown, создающим отчет и генерирующим таблицы с помощью пакета Kable.

Я переношу значения своих результатов в процентном формате с помощью функции «sprintf», и до сих пор все работало нормально. Проблема в том, что у меня есть таблица с полем, которое я не хочу использовать в процентах, однако с помощью функции все значения в таблице преобразуются в проценты.

Мой код таков:

library(kableExtra)
matrix1<-function(matriz_deriv)

z12 <- matrix(sprintf("%.2f%%",100*matrix1), 
            nrow=nrow(matrix1), 
            ncol=ncol(matrix1))

colnames(z12) <- c("Month","value")

kable(z12, "latex", caption = "Matrix1", 
            booktabs = T) %>%
kable_styling(latex_options = c("striped", "hold_position"))

код работает нормально, но мне просто нужно применить процент к столбцу «Значения», а не к столбцу «Месяц», а с помощью функции sprintf процент применяется к полной матрице, показывающей месяцы с процентом.

У вас есть идеи, как с этим бороться?

Я пробовал несколько альтернатив, но безуспешно. Прилагаю изображение результата матрицы с процентами


person boris_traveler    schedule 29.01.2020    source источник
comment
(1) ваш код неполный, синтаксически неправильный, обновите свой вопрос, указав правильный код. (2) Вы явно запускаете sprintf для всей матрицы, пробовали ли вы запускать ее только для одного столбца, например matrix1[,2]?   -  person r2evans    schedule 30.01.2020
comment
@r2evans, ты прав!. (1) Я знал, что этот фрагмент кода не очень интуитивно понятен, потому что это только часть для создания таблицы, поскольку сам код слишком длинный для размещения. (2) Да, это было решение проблемы, только я его неправильно применял, спасибо за помощь!   -  person boris_traveler    schedule 31.01.2020


Ответы (1)


Примените sprintf к столбцу, который хотите отформатировать:

library(kableExtra)

set.seed(123)
z12 <- matrix(c(1:12, rnorm(12, 0.5, 0.25)), ncol = 2)
colnames(z12) <- c("Month","value")

z12[,2] <- sprintf("%.2f%%", 100*z12[,2])

kable(z12, "html", caption = "Matrix1", 
      booktabs = T) %>%
  kable_styling(latex_options = c("striped", "hold_position"))

person M--    schedule 29.01.2020