具有數據幀(df
),其中列(df$list
)之一的成分列表不同長度的,什麼是應用在此列的函數,並將結果保存在新列的最佳方式?使用列表清單的最有效方法是什麼?
下面是什麼我都試過了,但它是我的數據幀極其緩慢(10K行,沒有太大)。我正在尋找其他更好的方法來完成這項任務。
df$new <- apply(df, 1, FUN = function(x) myFunc(x$list))
實施例:
# constructing df & DF
a <- c(rep("A", 3), rep("B", 3), rep("A",2))
b <- c(1,1,2,4,1,1,2,2)
df <- data.frame(a,b)
DF <- data.frame(c = c(1:8), d = c(8:1))
row.names(DF) <- c("A", "B", "C", "D", "E", "F", "G", "H")
# list of lists
df_red <- aggregate(list(track = 1:NROW(df)), df[,1:2], '[')
df_red$list_1 <- apply(df_red, 1, FUN = function(x) row.names(DF[(x$track),]))
# Function
searchInDF <- function(list){DF[list,]$d}
# apply function on a list of list
df_red$list_2 <- apply(df_red, 1, FUN = function(x) searchInDF(x$list_1))
請提供reproducibl例如。 –
可能最適合創建/更改爲不同的數據結構。列表列很少是一個好主意。 – Roland
請參閱更新 – Rotail