gpt4 book ai didi

r - 连接每行 7 个最高列的名称的有效方法?

转载 作者:行者123 更新时间:2023-12-02 17:23:15 24 4
gpt4 key购买 nike

此代码将获取第一行中最高的 7 列的名称,然后将它们粘贴到一个新变量中。我想对 1M 行长的数据集中的每一行执行此操作,但我无法在合理的时间内执行循环。在 R 中执行此操作的最有效方法是什么?

谢谢

data(mtcars)
mtcars$names = ""
mtcars[1,]$names = paste(names(sort(mtcars[1,1:11]))[5:11],collapse = " ")

最佳答案

不确定这在内存方面的效率如何,但它相当快并且都是基于 R 的:

maxnrow <- function(data, n) {
rowidx <- 1:nrow(data)
out <- vector(mode="list", n)
for (i in 1:n) {
out[[i]] <- max.col(data, "first")
data[ cbind(rowidx, out[[i]]) ] <- -Inf
}
do.call(paste, lapply( out, function(x) names(data)[x] ))
}


mtcars2 <- mtcars[sample(1:nrow(mtcars),1e6,replace=TRUE),]

system.time( maxnrow(mtcars2, 7) )
# user system elapsed
# 10.02 0.58 10.62

关于r - 连接每行 7 个最高列的名称的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41052568/

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