gpt4 book ai didi

r - 为大型数据框使用 purrr::map2 的更有效方法

转载 作者:行者123 更新时间:2023-12-05 02:38:02 25 4
gpt4 key购买 nike

是否有更快的方法来执行以下操作,在实际应用程序中,df 有很多行(因此 list_of_colnames 具有相同数量的元素):

list_of_colnames <- list(c("A", "B"), c("A"))
some_vector <- c("fish", "cat")

map2(split(df, seq(nrow(df))), list_of_colnames, function(row, colnames) {
row$indicator <- ifelse(any(row[, colnames] %in% some_vector), 1, 0)
return(row)
})

虽然当前的实现有效,但大型 df 需要几个世纪的时间。事实上,我认为 split() 是一个主要的瓶颈。

谢谢!

最佳答案

一个选择可能是使用行/列索引

rowind <- rep(seq_len(nrow(df)), lengths(list_of_colnames) * nrow(df))
df$indicator <- +(tapply(c(t(df[unlist(list_of_colnames)])) %in% some_vector,
rowind, FUN = any))

-输出

> df
A B indicator
1 fish A 1
2 hello cat 1

数据

df <- data.frame(A =  c('fish', 'hello'), B = c('A', 'cat'))

关于r - 为大型数据框使用 purrr::map2 的更有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69799742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com