【发布时间】:2020-07-02 02:21:29
【问题描述】:
我的数据看起来像这样
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
我希望每个条目都告诉我特定水果的产地。
使用双 for 循环很容易做到这一点。但是当我用嵌套的 lapply 函数做同样的事情时,它看起来根本没有修改列表(即vertical_data)。这是为什么?我想使用 apply 函数执行此操作的原因是它更快。我的实际数据集将包含数千个项目和“水果”。使用 for 循环会花费很长时间。
非常感谢您的帮助。
谢谢
【问题讨论】: