小编YYY*_*YYY的帖子

如何在不覆盖当前变量的情况下获取R代码?

我试图通过使用source命令执行R代码来检索结果.由于某些变量具有相同的名称,因此执行的R文件中的变量将覆盖当前变量.如何在不覆盖当前变量的情况下检索结果?

#main.R Code
b=0
source('sub.R')
if(a>1){print(T)}else{print(F)}

#sub.R
b=1
test<-function(x){x=1}
a=test(b)
Run Code Online (Sandbox Code Playgroud)

我只想取回asub.R没有bmain.R由同名变量被覆盖sub.R.本质上,我想执行一个R文件,就像调用一个只保留返回值的方法一样.

r

6
推荐指数
1
解决办法
1023
查看次数

并行计算时如何写出日志?如何调试并行计算?

我发现如果并行计算期间有多个打印函数,则只有最后一个会显示在控制台上。所以我设置了outfile选项,希望我能得到每次打印的结果。这是 R 代码:

cl <- makeCluster(3, type = "SOCK",outfile="log.txt") 

abc <<- 123

clusterExport(cl,"abc")

clusterApplyLB(cl, 1:6,  
         function(y){
                     print(paste("before:",abc));
                     abc<<-y;
                     print(paste("after:",abc));
         }
)
stopCluster(cl)
Run Code Online (Sandbox Code Playgroud)

但我只得到三个记录:

starting worker for localhost:11888 
Type: EXEC 
Type: EXEC 
[1] "index: 3"
[1] "before: 123"
[1] "after: 2"
Type: EXEC 
[1] "index: 6"
[1] "before: 2"
[1] "after: 6"
Type: DONE 
Run Code Online (Sandbox Code Playgroud)

debugging parallel-processing r

5
推荐指数
1
解决办法
4797
查看次数

如何通过另一个data.table中定义的多个条件过滤data.table中的个案

我想知道是否有任何有效的方法可以通过另一个data.table中定义的多个条件来过滤data.table.在这种情况下有2个data.table:

# the filter data.table defines the condition
dt_filter<-data.table(A=c(1,2),B=c(8,7))
# dt1 the data.table to be filtered
dt1<-data.table(A=rep(c(1,2),5),B=c(8,4,3,1,1,5,9,7,1,1),C=c(rep(1,5),rep(2,5)))

ls_tmp<-lapply (1:nrow(dt_filter),function(i){
# exclude the record with the A&B defined the filter
dt1_add<-dt1[A==dt_filter[[i,1]]&B!=dt_filter[[i,2]]]
})
result<- rbindlist(ls_tmp)
Run Code Online (Sandbox Code Playgroud)

由于lapply循环,我的样本似乎效率不高.我不知道如何通过其他方式重写它.

r dplyr data.table

4
推荐指数
2
解决办法
5083
查看次数

如何动态加载库?

很抱歉提出简单问题.我是R初学者.我试图加载库运行时,例如

x<-"snow"; library(eval(x))
Run Code Online (Sandbox Code Playgroud)

结果:

Error in library(eval(x)) : 'package' must be of length 1.
Run Code Online (Sandbox Code Playgroud)

如果有人给我一些解决方案,我将不胜感激.

r

3
推荐指数
2
解决办法
978
查看次数

如何在不更改修改日期的情况下重命名文件

我写了一个脚本来重命名文件。但是我发现修改日期更改为相同的日期。因此,如果按日期对原始订单进行排序,则该原始订单将被破坏。有什么方法可以更改名称而不更改修改日期吗?或者,尽管日期已更改,但按日期排序的顺序仍然相同。以下是我当前的代码:

# save previous working folder
wkdir <- getwd()

# set the target folder
setwd("C:/Users/YY/Desktop/Tmp file/")

# set the file pattern
a <- list.files(path = ".", pattern = "abc_*.*$") 

# set the name to be replaced
b<-gsub("abc_","ABC_",a)

# rename
file.rename(a,b)

# restore previous working folder
setwd(wkdir)
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮助我,我将不胜感激。

r file-rename

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

什么是microbenchmark库中的lq&uq?

很抱歉问新手问题.我不知道如何解释microbenchmark结果中的lq和uq列.这是一个例子:

Unit: microseconds
       expr      min       lq   median       uq         max neval
f(1000, 1) 1082.875 1139.485 1151.071 1162.327 1199918.296  1000
g(1000, 1)  193.004  219.157  221.806  228.427    1099.097  1000
Run Code Online (Sandbox Code Playgroud)

r microbenchmark

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

是否有一种有效的方法可以在R中附加到现有的csv文件而不重复?

有一个data.frame附加到现有文件.当它被write.table函数追加时,它可能会导致重复的记录进入文件.以下是示例代码:

df1<-data.frame(name=c('a','b','c'), a=c(1,2,2))
write.csv(df1, "export.csv", row.names=FALSE, na="NA"); 

#"export.csv" keeps two copies of df1
write.table(df1,"export.csv", row.names=F,na="NA",append=T, quote= FALSE, sep=",", col.names=F);
Run Code Online (Sandbox Code Playgroud)

因此理想情况下,输出文件应该只保留df1的一个副本.但write.table函数没有任何重复检查参数.

感谢您提前提出任何建议.

csv r append dataframe write.table

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

如何根据R的data.table中另一列中的内容选择列?

我有一个像这样的data.table:

> dt<-data.table(F=rep(c('a','b','c'),each=2), fix=c(10:15),a=c(1:6), b=c(2:7),c=c(3:8))
> dt
   F fix a b c
1: a  10 1 2 3
2: a  11 2 3 4
3: b  12 3 4 5
4: b  13 4 5 6
5: c  14 5 6 7
6: c  15 6 7 8
Run Code Online (Sandbox Code Playgroud)

列F存储要为每行提取的列.因此,对于前2个记录列,将提取列'a',而将为3和4记录提取列'b'.每个记录都会保留"修复".理想的输出应该是这样的:

   F  fix new
1: a  10   1 
2: a  11   2
3: b  12   4
4: b  13   5
5: c  14   7
6: c  15   8
Run Code Online (Sandbox Code Playgroud)

r data.table

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