我在突出显示行之后尝试使用"reindent lines"但这不起作用(实际上它删除了缩进).例如,我想要一个快速的方法
拿这样的剧本
#parameters
b=2
c=1
d=4
q=3
Run Code Online (Sandbox Code Playgroud)
把它变成这个
#parameters
b=2
c=1
d=4
q=3
Run Code Online (Sandbox Code Playgroud)
在Rstudio
所以我觉得我不太明白内存是如何在R中工作的.我遇到了同样的代码在本周晚些时候变慢的问题(使用相同的R会话 - 有时甚至在我清除工作区时) .我试图开发一个玩具问题,我认为在使用大型物体时会重现我一直在观察的"减速效果".请注意,下面的代码有点内存密集(不要盲目地运行此代码而不调整n和N以匹配您的设置可以处理的内容).请注意,在开始看到这种减速模式(可能更长)之前,您可能需要大约5-10分钟.
N=4e7 #number of simulation runs
n=2e5 #number of simulation runs between calculating time elapsed
meanStorer=rep(0,N);
toc=rep(0,N/n);
x=rep(0,50);
for (i in 1:N){
if(i%%n == 1){tic=proc.time()[3]}
x[]=runif(50);
meanStorer[i] = mean(x);
if(i%%n == 0){toc[i/n]=proc.time()[3]-tic; print(toc[i/n])}
}
plot(toc)
Run Code Online (Sandbox Code Playgroud)
meanStorer肯定很大,但它是预先分配的,所以我不确定为什么循环随着时间的推移而减慢.如果我清除我的工作区并再次运行此代码,它将启动与最后几次计算一样慢!我正在使用Rstudio(如果重要的话).这里还有我的一些系统信息
这是在使用x的预分配之前的toc图(即x=runif(50)
在循环中使用)
这是使用x的预分配后的toc图(即x[]=runif(50)
在循环中使用)
是吗?我没做我认为它正在做的事情?当我清理工作区时,什么东西在引擎盖下?
更新:使用最新版本的R(3.1.0),即使将N增加到N = 3e8,问题也不再存在(注意R不允许向量太大)
虽然修复只是将R更新到最新版本是非常不满意的,因为我似乎无法弄清楚为什么版本2.15中存在问题.知道导致它们的原因仍然很好,所以我将继续保持这个问题的开放性.
我正在制作一个应用程序,询问用户一些基本的调查问题.完成后,要求他们通过滑动条提供数字输入,按继续,然后生成绘图,再次询问用户输入,更新绘图等.第一个输入应该是绘图上的y1,第二个输入应该是输入应该是图上的y2,等等.但另外我想保存用户输入的数据,这样我就可以在全局的R脚本中访问它,所以可以使用sendmailR将它发送给我,这样它就可以作为文本文件下载到我的计算机上.但我无法弄清楚如何做到这一点.这是我到目前为止所拥有的.
n=10 #number of times to ask the user for input which will be stored in harv[i]
Time = seq(n)
harv = rep(0,n) #initializing vector for storage of user input at time 1 through n
############### define server logic
shinyServer(function(input, output){
# Compute the forumla text in a reactive expression since it is
# shared by the output$caption and output$mpgPlot expressions
for(i in Time){
# generate a plot
output$yieldplot <- renderPlot({
harv[i] = input$harvest
plot(Time, harv, type='p', ylim=c(0,1))
})
}#for …
Run Code Online (Sandbox Code Playgroud) 假设我在Rstudio的控制台中输入以下命令
x=seq(0,1e11, by=.01)
plot(x,sin(x))
Run Code Online (Sandbox Code Playgroud)
显然,这是一件非常愚蠢的事情.但我的问题是你如何终止这个过程?我无法在任何地方找到这个答案.
试图解决方案:按ctrl + q,按esc,进入session-> interupt R,进入session-> terminate R.似乎没什么用.这似乎是特定于绘图,例如,如果你运行一个愚蠢的大循环,大多数上述选项似乎按预期工作.
理想情况下,我想要一个不会丢失我在控制台中工作的R脚本的解决方案(因为我有一段时间没有保存它).
根据此Stack Overflow线程,JavaScript中的Math.random()取决于浏览器或操作系统.基本上,它意味着JavaScript没有用于生成均匀随机变量的标准算法.这个帖子似乎暗示Chrome的统一随机数算法特别糟糕.
在我的程序中,我尝试了解用户基于某些信息加上随机噪声的行为.我对Math.random()生成的数字使用Box-Muller变换来生成高斯随机数.这是否意味着使用一个浏览器的用户将遇到不同类型的噪音?注意我使用Box Muller因为我不关心速度,但我知道它对伪随机数的生成方式特别敏感.似乎有很多线程关于为什么Math.random()是坏的,但在线程中并没有太多关于实际使用的内容.什么是最佳做法?有什么东西我应该特别注意,因为我使用Box-Muller转换为高斯数字?
我正在Rstudio中编写一个R脚本,我想要一些方法来获取编写代码的文件的名称.我想要这样做的原因是我想要一段代码我可以坚持在底部我的所有脚本,以便我的结果会自动通过sendmailR包发送给我.
我希望我的附件名称具有filename_date结构,其中filename是正在执行的文件的名称,date是执行的时间.有没有办法这样做,或者我每次运行新脚本时都必须手动输入文件名.
这里也提出了类似的问题,但由于使用方法的不同,解决方案解决方案从未提供过答案.我实际上不需要位置,只需要文件名,我认为这应该是可行的(但可能不是)
Rscript:确定执行脚本的路径(问基本相同的问题,但想要整个路径,没有接受的答案)
我想写一个文件,然后在一个循环(在Windows机器上)附加几次.每次我追加它之后,我想关闭连接,因为我希望文件下沉到一个Dropbox帐户,这样我可以在其他计算机上打开它,同时代码正在运行,以检查日志文件的状态(注意这个条件使得这个问题不同于任何关于关于接收器,writeLines,write,cat等的问题.我试过了
#set up writing
logFile = file("log_file.txt")
write("This is a log file for ... ", file=logFile, append=FALSE)
for(i in 1:10){
write(i, file=logFile, append=TRUE)
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过sink(file=logFile,append=TRUE); print(i); sink()
; 在循环中也是cat
.两种选择都不起作用.该文件仅显示i = 10,即循环的最后一次迭代.我注意到写文档中的以下句子.
"如果为TRUE,则数据x将附加到连接中."
以上是否意味着它不会附加到现有文件.
这是我的问题的玩具版本
x = runif(10);
y = runif(10);
z = (x+y)*(x-y);
Run Code Online (Sandbox Code Playgroud)
我想生成z与(x + y)和(xy)的热图.问题是z是一个向量,并没有在y和x的所有组合上定义.请注意我不是在寻找为这些缺失值生成z的答案,这在问题的真实版本中是不可能的.这只是一个可以使用的最小版本.所有的解决方案我已经能够找到,如filled.contour
需要在自变量的网格中指定,而不仅仅是一组没有结构(X,Y,Z)的数据点Z A矩阵每 本身.
假设我想要集成一些涉及一些其他用户定义函数的和和产品的函数.让我们举一个非常简单的例子,它给出了同样的错误.
integrate(f = sin + cos, lower=0, upper=1)
Run Code Online (Sandbox Code Playgroud)
这会产生"sin + cos中的错误:二元运算符的非数字参数",我认为这样说只是将函数添加到一起而不传递某种参数是没有意义的.所以我有点卡在这里.这个线程构成了我认为是一个更复杂的问题的解决方案,可以在这里应用,但在这种情况下似乎很长时间这么简单的任务.我真的很惊讶我无法在帮助手册中找到函数的函数参数,所以我认为我没有使用正确的术语.
我正在编写需要在 mac 和 windows 中为用户工作的代码。所有用户在他们的机器上都有谷歌驱动器目录的本地副本。我有一段代码可以自动将工作目录设置为源文件位置。让我们称这个目录为“directory1”。在目录 1 中有一个名为“目录 2”的文件夹,其中包含数据文件。
以下代码适用于所有使用 Windows 机器的用户,工作目录设置为 directory1,
data = read.csv(file="directory2\\filename", header=F)
Run Code Online (Sandbox Code Playgroud)
但是,以下代码至少对 mac 上的某些用户不起作用
data = read.csv(file="directory2/filename", header=F)
Run Code Online (Sandbox Code Playgroud)
我已经验证 mac 用户确实将工作目录设置为 directory1,并且在他们的 directory1 中有一个 directory2,并且所有拼写都正确。但是,他们收到一条警告,指出 directory2 不存在。有此问题的所有用户都在使用 Rstudio。我要求用户包含完整路径,这确实有效。你不能在 Rstudio 的 mac 上使用相对路径吗?我也试过 ./ 和 / 来启动相对路径,但这些都不起作用。
例如。考虑代码
plot(rnorm(10), xlab = NA, ylab = NA)
mtext(side=1, expression( paste("Log"["10"], ( frac( "x","y") ) )))
Run Code Online (Sandbox Code Playgroud)
我想使表达式中的括号更大,以适合其中的表达式大小。注意,在我的实际脚本中,表达式实际上要复杂得多,但这是一个可重现的最小示例,它抓住了问题的实质。
假设我有一个数据X,一个nxm矩阵和一个n向量时间,它被输入函数.在这个函数中我想创建函数
fun1 = approxfun(time, X[,1], rule=2)
fun2 = approxfun(time, X[,2], rule=2)
Run Code Online (Sandbox Code Playgroud)
...
funm = approxfun(time, X[,m], rule=2)
Run Code Online (Sandbox Code Playgroud)
理想情况下,如果有类似应用的东西可以应用大约,那将是伟大的但我无法申请工作.我已经研究了粘贴和解析但我被告知R的主要租户是为了避免解析.列表看起来很有希望,因为你可以创建一个函数列表,如果有一个像rbind或cbind这样的函数在矩阵上只对可能有效的列表做了,但是因为m是任意的,我有点卡在这里.我真的很抱歉,如果之前有过类似的问题我会错过它.
r ×11
rstudio ×4
javascript ×1
macos ×1
memory ×1
performance ×1
plot ×1
random ×1
sendmailr ×1
shiny ×1