У меня есть data.frame в узком формате, подобном этому:
test_data<-data.frame(id=rep(1:200,50),
variable=sample(LETTERS,10000,T),
value=sample(letters,10000,T), stringsAsFactors = F)
Я хочу получить список, содержащий списки для каждого идентификатора с каждой переменной в виде вектора внутри (что-то вроде простого формата JSON):
list("1"=list(A=c("a","b"), B=character(), C="v" ...
Мой код:
return_data <-
sapply(unique(test_data$id), function (r)
sapply(LETTERS, function(q)
test_data[test_data$id == r & test_data$variable == q, "value"],
USE.NAMES = T,simplify = F),
USE.NAMES = T,simplify = F)
Работает, но работает слишком медленно с большими выборками.Я переписал это с данными.стол, но это все еще медленно.У меня есть некоторые улучшения с parSapply, но я считаю, что должен быть более эффективный алгоритм ...