小编not*_*tuo的帖子

有没有办法以RIR格式输出文本

我正在编写脚本,我想根据条件将不同颜色的文本消息输出到控制台.例如:RED表示错误,BLUE表示警告等.

我正在使用RStudio.

console r colors output-formatting

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

有没有办法知道R脚本是直接运行还是在另一个脚本中运行?

我正在使用R studio.

有没有办法知道R脚本是由控制台中的源命令直接运行还是在另一个脚本中运行.即.另一个脚本来源,这可以调用第一个脚本.

在某些情况下,这对于提示某些值很有用.

我现在正在做的是将变量设置为true或false,并在脚本中检查该变量.这有效,但自动方式更好.

谢谢你的时间.

编辑:更多信息

假设我有一个运行良好的独立脚本,但是这个脚本是另一个脚本完成后运行的进程的一部分.如果我必须同时运行,我可以运行第一个,然后运行第二个; 但我也有机会跑第二个.

我要问的是,是否有办法(在第二个脚本中)验证第二个是从第一个调用还是从第二个调用.

看看他的简单例子(灵感来自Greg Snow的回答).首先是我在Rstudio中调用的文件

# scripta.R
writeLines("script A")
if (interactive()) writeLines("interactive: true") else writeLines("interactive false")
source("scriptb.r")
writelines("after B")
Run Code Online (Sandbox Code Playgroud)

然后该文件被采购

# scriptb.R
writeLines("script B")
if (interactive()) writeLines("interactive: true") else writeLines("interactive false")
writeLines("end B")
Run Code Online (Sandbox Code Playgroud)

Rstudio的结果是

script A
interactive: true
script B
interactive: true
end B
after B
Run Code Online (Sandbox Code Playgroud)

我喜欢有类似的东西

script A
interactive: true
script B
interactive: false
end B
after B
Run Code Online (Sandbox Code Playgroud)

我希望现在更清楚了.

谢谢

r

8
推荐指数
2
解决办法
5078
查看次数

为什么这么慢?(循环在DF行与独立向量)

我有一段代码,总耗时约为30秒,下面的代码大约是27秒.我将违规代码缩小到这个:

d$dis300[i] <- h
Run Code Online (Sandbox Code Playgroud)

所以我换到另一件,现在工作得非常快(正如预期的那样).

我的问题是为什么这对第二个太慢了.数据DF约为7500x18变量

第一:( 27秒过去了)

d$dis300 <- 0
for (i in 1:netot) {
  h <- aaa[d$ent[i], d$dis[i]]
  if (h == 0) writeLines(sprintf("ERROR. ent:%i dis:%i", d$ent[i], d$dis[i]))
  d$dis300[i] <- h
}
Run Code Online (Sandbox Code Playgroud)

第二:(0.2秒过去了)

d$dis300 <- 0
for (i in 1:netot) {
  h <- aaa[d$ent[i], d$dis[i]]
  if (h == 0) writeLines(sprintf("ERROR. ent:%i dis:%i", d$ent[i], d$dis[i]))
  foo[i] <- h
}
d$foo <- foo
Run Code Online (Sandbox Code Playgroud)

你可以看到两者都是"相同的",但有一个人有这个DF而不是一个向量.

任何评论都非常感谢.我来自另一种语言,这让我疯了一会儿.至少我有解决方案,但我希望将来能够防止这类问题.

谢谢你的时间,

performance r

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

标签 统计

r ×3

colors ×1

console ×1

output-formatting ×1

performance ×1