gpt4 book ai didi

从同一行中指示的列返回值

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

我遇到了一个需要一个多小时才能运行的简单循环,需要帮助来加快速度。

基本上,我有一个包含 31 列和 400 000 行的矩阵。前 30 列有值,第 31 列有列号。我需要按行检索第 31 列指示的列中的值。

示例行:[26,354,72,5987..,461,3](这意味着第 3 列中的值被查找 (72))

太慢的循环看起来像这样:

a <- rep(0,nrow(data)) #To pre-allocate memory
for (i in 1:nrow(data)) {
a[i] <- data[i,data[i,31]]
}

我认为这可行:

a <- data[,data[,31]]

...但它会导致“错误:无法分配大小为 2.8 Mb 的向量”。

我担心这是一个非常简单的问题,所以我花了几个小时试图理解 apply、lapply、reshape 等,但不知何故我无法掌握 R 中的矢量化概念。

矩阵实际上有更多的列也进入 a 参数,这就是为什么我不想重建矩阵或拆分它。

非常感谢您的支持!

克里斯

最佳答案

t(data[,1:30])[30*(0:399999)+data[,31]]

这是可行的,因为您可以引用数组格式和向量格式(在本例中为 400000*31 长向量)的矩阵,首先按列计数。要按行计数,您可以使用转置。

关于从同一行中指示的列返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3192688/

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