我有一列混合類型,矢量和數據框的2列。data.frame行以列出命名元素
> my.list
$a
[1] 1
$df1
key value
1 b 2
2 c 3
$df2
key value
1 d 4
2 e 5
我想結束一個載體列表,每個數據幀行將成爲一個列值,列值爲列值,列值爲元素名稱的列表元素。
所以導致這個例子是:
$a
[1] 1
$b
[1] 2
$c
[1] 3
$d
[1] 4
$e
[1] 5
其實這裏是我如何做到這一點:
my.list <- list(a = 1,
df1 = data.frame(key = c("b", "c"), value = 2:3),
df2 = data.frame(key = c("d", "e"), value = 4:5))
unlist(lapply(seq_along(my.list), function(i) {
if (is.data.frame(my.list[[i]])) {
with(my.list[[i]], as.list(setNames(value, key), all.names = TRUE))
} else {
setNames(my.list[i], names(my.list[i]))
}
}), recursive = FALSE)
但我並不真的喜歡這個解決方案。你有更聰明的想法來實現這個嗎?由於
謝謝!我不習慣'funprog'函數,但它確實是一個很好的解決方案! –