Я хочу отформатировать данные в списке фреймов данных в процентах. Значения являются факторами.
df.ls <- list(list(id = c(1,2,3), x = c(4,5,6), works = c(7,8,9)),
list(id = c(10,11,12), x = c(13,14,15), works = c(16,17,18)))
Для этого я создаю свой процентный формат:
library(scales)
my_perc_format=percent_format(accuracy = .01, scale = 100,
suffix = "%",decimal.mark = ".")
Затем я пытаюсь применить его к своему списку, форматируя значения в виде чисел:
test=lapply(df.ls, function(x)
my_perc_format(as.numeric(as.character(unlist(df.ls[[x]])))))
Отдельно это работает отлично, но, к счастью, не будет:
my_perc_format(as.numeric(as.character(unlist(df.ls[[1]]))))
Изменить:
Значения теперь являются факторами, но я хочу быть числом при преобразовании в проценты, если это возможно.
EDIT:
Это еще одна попытка конвертировать мои данные. На этот раз это как фактор. Без relist()
вывод в порядке, но не в нужной структуре. С relist()
я получаю искомую структуру, но она возвращает NA .
df.ls <- list(list(id = as.factor(c("1","2","3")), x = as.factor(c("4","5","6")), works = as.factor(c("7","8","9"))),
list(id = as.factor(c("10","11","12")), x = as.factor(c("13","14","15")), works = as.factor(c("16","17","18"))))
names(df.ls)=c("list1","list2")
test=as.data.frame(sapply(df.ls, function(x){
relist(my_perc_format(as.numeric(as.character(unlist(x)))),x)
}))