小编Zih*_*Guo的帖子

有没有办法在R中进行并行计算时释放内存

假设我想使用多个核运行R程序,如下所示

library(foreach)
library(doParallel)

no_cores <- detectCores() - 2

cl<-makeCluster(no_cores, outfile = "debug.txt")

registerDoParallel(cl)

result <- foreach(i = 10:100, 
        .combine = list,
        .multicombine = TRUE)  %dopar%  {

          set.seed(i)

          a <- replicate(i, rnorm(20)) 
          b <- replicate(i, rnorm(20))

          list(x = a + b, y = a - b)

        } 
Run Code Online (Sandbox Code Playgroud)

但是,我发现程序运行一段时间后内存使用量增加了.我认为该程序不会释放旧对象.所以我试着用gc()as

result <- foreach(i = 10:100, 
        .combine = list,
        .multicombine = TRUE)  %dopar%  {

          set.seed(i)

          a <- replicate(i, rnorm(20)) 
          b <- replicate(i, rnorm(20))

          list(x = a + b, y = a - …
Run Code Online (Sandbox Code Playgroud)

parallel-processing memory-management r

8
推荐指数
1
解决办法
765
查看次数

如何将数据帧拆分两列,并根据组计算行数更有效

我有一个超过120000行的data.frame,它看起来像这样

> head(mydf)
ID MONTH.YEAR VALUE
1 110  JAN. 2012  1000
2 111  JAN. 2012  1000
3 121  FEB. 2012  3000
4 131  FEB. 2012  3000
5 141  MAR. 2012  5000
6 142  MAR. 2012  4000
Run Code Online (Sandbox Code Playgroud)

我想拆分data.frame依赖于MONTH.YEARVALUE列,并计算每个组的行,我的期望答案应该是这样的

MONTH.YEAR VALUE count
JAN. 2012  1000  2
FEB. 2012  3000  2
MAR. 2012  5000  1
MAR. 2012  4000  1
Run Code Online (Sandbox Code Playgroud)

我试图拆分它并使用sapply计数每组的数量,这是我的代码

sp <- split(mydf, list(mydf$MONTH.YEAR, mydf$VALUE), drop=TRUE);
result <- data.frame(yearandvalue = names(sapply(sp, nrow)), count = sapply(sp, nrow))
Run Code Online (Sandbox Code Playgroud)

但我发现这个过程很慢.是否有更有效的方式来表达这一点?非常感谢你.

r dataframe

3
推荐指数
1
解决办法
1072
查看次数

如何删除包含NA的列或等于0的方差

我想scale在做PCA之前得到我的数据,但不幸的是我发现有些列包含NA,而某些列的方差等于0,我想删除这些列.这是我的数据的一个例子

df <- data.frame( v1 = 1:10 , v2 = rep( 0 , 10 ) , v3 = sample( c( 1:3 , NA ) , 10 , repl = TRUE ), v4 = 1:10 )
Run Code Online (Sandbox Code Playgroud)

我想同时删除v2v3列.我该如何实现呢?

我知道如何删除列包含NA,然后删除方差等于0的列.

colsd <- apply(df, 2, sd)
df2 <- df[!is.na(colsd)]
colsd2 <- apply(df2, 2, sd)
df3 <- df2[!colsd2 == 0]
Run Code Online (Sandbox Code Playgroud)

但它看起来很冗余,我只是想知道我能否实现这个更高效,也许只是在一条线上.谢谢你的回复.

r dataframe

3
推荐指数
1
解决办法
67
查看次数

如何使用R从html文件中提取数据

我想从GEO网站上提取一些数据,我该怎么做?该网站的网址是http://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSM410750,我想得到病人的"疾病状态",我用了命令

readLines("http://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSM410750")
Run Code Online (Sandbox Code Playgroud)

要导入html,我需要的信息是在第288行.有人能帮助我吗?非常感谢你.我会很感激的.

html r extract

-2
推荐指数
1
解决办法
1497
查看次数