gpt4 book ai didi

R 避免 rowwise() 并寻找更快的替代方案

转载 作者:行者123 更新时间:2023-12-05 05:47:15 30 4
gpt4 key购买 nike

我想将两个向量合并到一个数据集中,并将其与函数 mutate 集成为 5 个新列到现有数据集中。这是我的示例代码:

vector1<-list(c("Reply","Reshare","Like","Share","Search"),c("Reply","Reshare","Like","Share","Search"),c("Reply","Reshare","Like","Share","Search"))
vector2<-list(c(1,2,6,3,4),c(3,7,9,2,4),c(5,2,8,4,0))

tibble(vector1=vector1,
vector2=vector2)%>%
rowwise()%>%
mutate(vector2|> set_names(vector1)|> as.list()|> data.frame())

# A tibble: 3 x 7
# Rowwise:
vector1 vector2 Reply Reshare Like Share Search
<list> <list> <dbl> <dbl> <dbl> <dbl> <dbl>
1 <chr [5]> <dbl [5]> 1 2 6 3 4
2 <chr [5]> <dbl [5]> 3 7 9 2 4
3 <chr [5]> <dbl [5]> 5 2 8 4 0

到目前为止,这工作得很好。但是,我有一个非常大的数据集,rowwise() 解决方案非常耗时。如果我省略 rowwise() 函数,我会收到一条错误消息。
我认为错误是由于我将向量转换为列表 (as.list())。数据集的 mutate 函数似乎无法处理此问题。
rowwise() 函数应该被省略,只有 mutate 函数中的代码应该被改变。
谁能帮助我并提供更快的解决方案?

最佳答案

如果 vector1 具有与示例中相同的值(并且顺序相同),我们可以在 base R 中以更简单的方式执行此操作。

do.call(rbind, vector2) |>
as.data.frame() |>
setNames(vector1[[1]])

# Reply Reshare Like Share Search
#1 1 2 6 3 4
#2 3 7 9 2 4
#3 5 2 8 4 0

关于R 避免 rowwise() 并寻找更快的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71033875/

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