对于tcltk应用程序,我想启动R脚本而不打开控制台窗口或启动DOS框。我已经想通了,通过创建指向RScript.exe的链接,可以强制使控制台窗口最小化,但是我想知道是否可以完全避开控制台窗口吗?
我想创建一个获取数据集名称和包名称的函数,并将数据集作为data.frame返回.这是我的尝试
loadDataSet <- function(name, pkg) {
varname <- data(name, package=pkg)
return(get(varname[[1]]))
}
loadDataSet("acme", "boot")
Run Code Online (Sandbox Code Playgroud)
但是,此功能失败.问题似乎是,对data()的调用不会查找name变量的值,而是查找"name".
我已经知道如何从变量到其名称,通过deparse(替换(var)).但是我怎么走另一条路,从"var"到var?
任何暗示赞赏!
在我的图表中,我编码了圆形直径的一些信息.我的问题是,在图例中记录这些信息的最简单方法是什么?
这是我到现在为止所尝试的:
dat <- rnorm(100)
cex_brks <- quantile(dat, c(0.25,0.5,0.75))
cex_size <- c(1,1.4,1.8, 2.2)
cex <- rep(NA, length(dat))
for (i in 1:3) {
cex[is.na(cex) & dat<=cex_brks[[i]]] <- cex_size[[i]]
}
cex[is.na(cex)] <- cex_size[[4]]
plot(dat, cex=cex, pch=21)
legend(
"bottom",
legend=c("very small", "small", "large", "very large"),
bty="n",
pch=21,
cex=cex_size
)
Run Code Online (Sandbox Code Playgroud)
但是,这样做,不仅符号(pch)的大小发生了变化,而且图例文本也发生了变化.如何覆盖它,以便只有图例符号是不同的大小?
这可能是如此简单,当答案回来时我会畏缩但我完全难过.我已经尝试过手册,尝试搜索网页,各种示例以及我能想到的任何其他内容.我仍然被困住了.
我正在尝试为用户创建一个简单的输入,以添加两个值,然后我可以在R脚本的其余部分中使用这些值.我需要脚本暂停并等待来自用户的输入,然后在获得输入后继续(就像选择文件函数的工作原理一样).在阅读了一堆东西之后我决定使用库(tcltk).我在一个函数中有一个漂亮的小盒子.
inputs <- function(){
xvar <- tclVar("")
yvar <- tclVar("")
tt <- tktoplevel()
tkwm.title(tt,"Input Numbers")
x.entry <- tkentry(tt, textvariable=xvar)
y.entry <- tkentry(tt, textvariable=yvar)
reset <- function()
{
tclvalue(xvar)<-""
tclvalue(yvar)<-""
}
reset.but <- tkbutton(tt, text="Reset", command=reset)
submit <- function() {
x <- as.numeric(tclvalue(xvar))
y <- as.numeric(tclvalue(yvar))
print(x)
print(y)
tkdestroy(tt)
}
submit.but <- tkbutton(tt, text="submit", command=submit)
tkgrid(tklabel(tt,text="Enter Two Inputs"),columnspan=2)
tkgrid(tklabel(tt,text="Input1"), x.entry, pady = 10, padx =10)
tkgrid(tklabel(tt,text="Input2"), y.entry, pady = 10, padx =10)
tkgrid(submit.but, reset.but)
}
Run Code Online (Sandbox Code Playgroud)
当我输入时:
inputs()
Run Code Online (Sandbox Code Playgroud)
弹出漂亮的小方框,我可以输入我的值,例如3和4.
我回来了
<Tcl> …Run Code Online (Sandbox Code Playgroud) 我试图从ClinicalTrials.gov的XML文件中提取信息.该文件按以下方式组织:
<clinical_study>
...
<brief_title>
...
<location>
<facility>
<name>
<address>
<city>
<state>
<zip>
<country>
</facility>
<status>
<contact>
<last_name>
<phone>
<email>
</contact>
</location>
<location>
...
</location>
...
</clinical_study>
Run Code Online (Sandbox Code Playgroud)
我可以在以下代码中使用CRAN的R XML包从XML文件中提取所有位置节点:
library(XML)
clinicalTrialUrl <- "http://clinicaltrials.gov/ct2/show/NCT01480479?resultsxml=true"
xmlDoc <- xmlParse(clinicalTrialUrl, useInternalNode=TRUE)
locations <- xmlToDataFrame(getNodeSet(xmlDoc,"//location"))
Run Code Online (Sandbox Code Playgroud)
这样做很好.但是,如果查看数据框,您会注意到xmlToDataFrame函数将所有内容集中在<facility>一个连接的字符串中.解决方案是编写代码以逐列生成数据框,例如,您可以生成
如何创建一个二次带矩阵,我给对角线和对角线下方和上方的第一个对角线?我正在寻找像这样的功能
tridiag(upper, lower, main)
Run Code Online (Sandbox Code Playgroud)
在哪里length(upper)==length(lower)==length(main)-1和返回,例如,
tridiag(1:3, 2:4, 3:6)
[,1] [,2] [,3] [,4]
[1,] 3 1 0 0
[2,] 2 4 2 0
[3,] 0 3 5 3
[4,] 0 0 4 6
Run Code Online (Sandbox Code Playgroud)
有没有一种有效的方法呢?
有没有人知道它是否可以从主R脚本中获取R脚本,但是每个源文件都在一个单独的R会话中运行?我试图并行运行多个R进程(不使用复杂的并行库)并且考虑为每个拆分步骤调用一个新进程可以加快速度(我有很多RAM).
这是一个新手问题。如何定义tsk使用(sqlite)数据库中的数据的(分类)?该mlr3db例子似乎先写内存中的数据。就我而言,数据已经在数据库中。也许更大的问题是,目标数据和特征在不同的表中。
我试过的:
con <- DBI::dbConnect(RSQLite::SQLite(), dbname = "my_data.db")
my_features <- dplyr::tbl(con, "my_features")
my_target <- dplyr::tbl(con, "my_targets")
task <- mlr3::TaskClassif$new("my_task", backend=my_features, target="???")
Run Code Online (Sandbox Code Playgroud)
然后我不知道如何指定target参数。
也许一个解决方案是在数据库中创建一个连接功能和目标的 VIEW?