У меня есть данные, которые выглядят так:
aList <- list(a1 = c("apple", "banana", "orange", "strawberry", "cherry"),
a2 = c("banana", "cherry", "apple"),
a3 = c("apple", "strawberry", "pineapple"),
a4 = c("raspberry", "strawberry", "apple"),
a5 = c("pineapple", "lemon", "orange", "banana", "apple"),
a6 = c("lemon", "apple", "blueberry"),
a7 = c("watermelon", "apple", "banana", "mango"),
a8 = c("mango", "cherry", "apple", "lemon"),
a9 = c("orange", "banana", "strawberry"),
a10 = c("mango", "strawberry"))
Я бы хотел получить их в вертикальном формате, например, что происходит при запуске этого кода:
vertical_data <- list()
for (x in names(aList)) {
for (y in aList[[x]]) {
if (is.null(vertical_data[[y]])) {
vertical_data[[y]] <- x
} else {
vertical_data[[y]] <- c(x, vertical_data[[y]])
}
}
}
vertical_data
I Мне бы хотелось, чтобы каждая запись рассказывала мне, где находится конкретный фрукт.
Это было достаточно легко сделать с двойным для l oop. Но когда я делаю то же самое с вложенной функцией lapply, похоже, что она вообще не изменяет список (то есть vertical_data). Это почему? Причина, по которой я хотел бы сделать это с помощью функции применения, заключается в том, что это быстрее. В моем реальном наборе данных будут тысячи предметов и "фрукты". Это займет слишком много времени для циклов.
Я бы очень признателен за помощь.
Спасибо