Представьте себе фрейм данных R с многочисленными строковыми столбцами, которые содержат цепочку цифр (научное представление) между некоторыми символами в каждой строке. Вот упрощенный пример:
df <- data.frame(id = 1:3,
vec1 = c("[a-4.16121967e-02 b4.51207198e-02 c-7.89282843e-02 d4.02516453e-03]",
"[a-7.52146867e-02 b3.78264938e-02 c-1.03749274e-02 d4.02516453e-03]",
"[a-2.13926377e-02 b9.27949827e-02 c-5.89836483e-02 d2.44455224e-03]"),
vec2 = c("[a-4.16121967e-02 b4.51207198e-02 c-7.89282843e-02 d4.02516453e-03]",
"[a-7.40210414e-02 b1.75862815e-02 c-1.03749274e-02 d4.02516453e-03]",
"[a-6.73705637e-02 b9.27949827e-02 c-8.35041553e-02 d2.44455224e-03]"))
Я ищу быстрое (фрейм данных, с которым я работаю, содержит намного больше и намного больше векторов) решение (желательно dplyr), которое преобразует векторные столбцы в списки с числовыми векторами для каждой строки.
Пока мне удалось удалить ненужные символы и разделить векторные элементы запятыми вот так:
mutate(df,
vec1 = str_replace_all(vec1, "\\[|\\]|a|b|c|d", ""),
vec1 = str_replace_all(vec1, " ", ","),
vec2 = str_replace_all(vec2, "\\[|\\]|a|b|c|d", ""),
vec2 = str_replace_all(vec2, " ", ","))
Может быть, для этого шага есть лучшее и более элегантное решение. Пока мы занимаемся этим: мне действительно интересно, как это сделать с помощью mutate_at () и start_with ("vec"), чтобы исправить все мои столбцы сразу.
Что еще более важно, я борюсь с преобразованием в числовые векторы, в результате чего получаются 2 столбца списка с одним числовым вектором с 4 элементами в каждой строке и столбце. Мне удалось извлечь и преобразовать только отдельные векторы, например:
as.numeric(unlist(strsplit(df[1,'vec1'], ",")))
Однако я бы хотел избежать цикла по всем векторам. Любая помощь высоко ценится.