1
一個data.frame我有一個列表(當然,時間稍長):獲得混合類型列表
lst <- list(c(x=1, y=2), NULL)
我怎麼會得到這樣的data.frame從我的名單?
data.frame(x=c(1, NaN), y=c(2,NaN))
x y
1 1 2
2 NaN NaN
可能有一個聰明的函數,而不是迭代循環和追加(這將是內存效率低下)。
一個data.frame我有一個列表(當然,時間稍長):獲得混合類型列表
lst <- list(c(x=1, y=2), NULL)
我怎麼會得到這樣的data.frame從我的名單?
data.frame(x=c(1, NaN), y=c(2,NaN))
x y
1 1 2
2 NaN NaN
可能有一個聰明的函數,而不是迭代循環和追加(這將是內存效率低下)。
我們可以用一個if/else
以取代NaN
空元素,然後用rbind
do.call
do.call(rbind,lapply(lst, function(x) if(is.null(x)) NA else x))
或者我們基於邏輯指數(sapply(lst, is.null)
)改變了NULL
元素NaN
和使用rbind
。
lst[sapply(lst, is.null)] <- NaN
setNames(do.call(rbind.data.frame, lst), paste0('V', 1:2))
嘗試'do.call(rbind,lapply(LST,函數(x)如果(is.null(X))NA否則x))' – akrun
太好了!這裏'do.call'背後的想法是什麼?你不能直接打電話嗎? – Xiphias
這是一個列表,所以你需要'do.call' – akrun