R 加快这个循环?
我有一个名为cpue的数据集,有330万行。我制作了这个数据帧的一个子集,名为dat.frame。(参见下面的cpue和dat.frame的头部)我在dat.frame中添加了两个新字段:“ssh_vec”和“ssh_mag”。尽管cpue和dat.frame的头看起来相同,但其余行的顺序实际上并不相同R 加快这个循环?,r,loops,indexing,R,Loops,Indexing,我有一个名为cpue的数据集,有330万行。我制作了这个数据帧的一个子集,名为dat.frame。(参见下面的cpue和dat.frame的头部)我在dat.frame中添加了两个新字段:“ssh_vec”和“ssh_mag”。尽管cpue和dat.frame的头看起来相同,但其余行的顺序实际上并不相同 head(cpue) code event Lat Long stat_area Day Month Year id 1 BCO 447602 -43.45 182.73
head(cpue)
code event Lat Long stat_area Day Month Year id
1 BCO 447602 -43.45 182.73 49 17 3 1995 1
head(dat.frame)
code event Lat Long stat_area Day Month Year id cal.jdate ssh_vec ssh_mag
1 BCO 447602 -43.45 182.73 49 17 3 1995 1 2449857 56.83898 4.499350
目前,我正在运行一个循环,使用唯一标识符“id”将ssh_vec和ssh_mag变量添加到“cpue”:
。。。其中:
nrow(dat.frame)
[1] 2797789
在循环中,没有任何东西看起来对计算要求太高。有更好的替代方案吗?我建议您查看一下
数据表。由于我没有您的数据,这里有一个使用虚拟数据的简单示例
library(data.table)
N = 10^6
dat <- data.table(
x = rnorm(1000),
g = sample(LETTERS, N, replace = TRUE)
)
dat2 <- dat[,list(mx = mean(x)),g]
h = merge(dat, dat2, 'g')
库(data.table)
N=10^6
dat我建议您查看一下数据表
。由于我没有您的数据,这里有一个使用虚拟数据的简单示例
library(data.table)
N = 10^6
dat <- data.table(
x = rnorm(1000),
g = sample(LETTERS, N, replace = TRUE)
)
dat2 <- dat[,list(mx = mean(x)),g]
h = merge(dat, dat2, 'g')
库(data.table)
N=10^6
dat您甚至需要循环吗?从发布的代码片段来看,它似乎不是
cpue_full$ssh[dat.frame$id] <- dat.frame$ssh_vec
cpue_full$sshmag[dat.frame$id]<- dat.frame$ssh_mag
cpue\u full$ssh[dat.frame$id]您甚至需要循环吗?从发布的代码片段来看,它似乎不是
cpue_full$ssh[dat.frame$id] <- dat.frame$ssh_vec
cpue_full$sshmag[dat.frame$id]<- dat.frame$ssh_mag
cpue\u full$ssh[dat.frame$id]是否确实需要一个循环?我认为这可能相当于:
cpue_full$ssh[dat.frame$id]<- dat.frame$ssh_vec
cpue_full$sshmag[dat.frame$id]<- dat.frame$ssh_mag
cpue\u full$ssh[dat.frame$id]是否确实需要一个循环?我认为这可能相当于:
cpue_full$ssh[dat.frame$id]<- dat.frame$ssh_vec
cpue_full$sshmag[dat.frame$id]<- dat.frame$ssh_mag
cpue_full$ssh[dat.frame$id]你的sessionInfo()$platform
?“x86_64-w64-mingw32/x64(64位)”你的sessionInfo()$platform
“x86_64-w64-mingw32/x64(64位)”看起来像是我在nograps顶部发布的。对不起,长官,谢谢。对我来说,作为一个循环,进行计算在概念上总是比较容易的,我的缺点是使用其他方法来执行它们。谢谢你,我好像把它贴在了上面。对不起,长官,谢谢。对我来说,作为一个循环,进行计算在概念上总是比较容易的,我的缺点是使用其他方法来执行它们。谢谢你,我要的正是椅子,我要的正是椅子