Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 加快这个循环?_R_Loops_Indexing - Fatal编程技术网

R 加快这个循环?

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

我有一个名为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        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顶部发布的。对不起,长官,谢谢。对我来说,作为一个循环,进行计算在概念上总是比较容易的,我的缺点是使用其他方法来执行它们。谢谢你,我好像把它贴在了上面。对不起,长官,谢谢。对我来说,作为一个循环,进行计算在概念上总是比较容易的,我的缺点是使用其他方法来执行它们。谢谢你,我要的正是椅子,我要的正是椅子