R добавить столбец для спарклайна со значением из каждого вектора-строки

Начните с фрейма данных

library(dplyr)
library(sparkline)
df <- data.frame(matrix(1:9, nrow = 3, ncol = 3))

   X1 X2 X3
1  1  4  7
2  2  5  8
3  3  6  9

Хотел бы добавить столбец "искра" для использования с спарклайном:

df <- df %>% mutate(spark = spk_chr(values = ?, type = "bar", elementId = X1))

Таким образом, знак вопроса (?) Будет заменен вектором, состоящим из каждой строки df.

Для первой строки ? = c(1, 4, 7) значения из первой строки spark = spk(values = c(1, 4, 7)...)

Я знаю, как извлечь вектор из любой строки, вектор первой строки - unlist(df[1,]), но не понимаю, можно ли это использовать в mutate.


person Vlad    schedule 18.06.2018    source источник
comment
Вы пробовали это? stackoverflow.com/questions/14568662/   -  person Ronak Shah    schedule 18.06.2018
comment
@Axeman Это не сработало - оно давало одинаковое значение для каждой строки. Пробовал Vectorize (spk_chr), и это изменило elementId, однако значения были неправильными для каждой строки.   -  person Vlad    schedule 18.06.2018
comment
Я не совсем уверен, какова ваша цель здесь. Как вы можете построить полосу для каждой строки с тремя отдельными элементами в каждой строке? Вы хотите нанести сумму?   -  person Axeman    schedule 18.06.2018
comment
@RonakShah - с вашим предложением я создал столбец строк, который объединяет каждую строку значений. Затем использовал strsplit в аргументе значений для spk_chr. Это сработало. Не уверен, есть ли более прямой подход, позволяющий избежать промежуточной стадии струны.   -  person Vlad    schedule 18.06.2018


Ответы (1)


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

cols = names(df)
df$y <- apply(df[,cols], 1, paste, collapse = "-")

Затем создал векторизованный spk_chr:

sparky <- Vectorize(sparkline::spk_chr)

Для изготовления искровой колонны:

df <- df %>% mutate(spark = sparky(strsplit(y, split="-"), type = "bar", elementId = X1))
person Vlad    schedule 18.06.2018