在R中,可以握住设备,绘制图片,然后刷新设备以渲染图形.这对于具有数千个数据点,颜色梯度等的非常复杂的绘图非常有用,因为在没有保持的情况下,设备将在每次绘图操作之后刷新.它运作得很好.
但是,一旦绘图到位,任何窗口操作(如调整大小)都会导致绘图刷新 - 但是,这次没有保持和刷新设备,而是逐个绘制绘图元素并每次刷新显示.这非常烦人.
显然,我可以dev.hold在调整窗口大小之前手动调用,但这不是一个真正的解决方案.
有没有办法告诉R设备应该暂停进行大小调整等操作?
我有一个.csv文件:
lp;imie;nazwisko;ulica;numer;kod;miejscowosc;telefon;email;data_ur
1;Jan;Kowalski;ul. Nowa;1a;11-234;Budry;123-123-456;jan@go.xxx;1980.05.13
2;Jerzy;Nowak;ul. Konopnicka;13a/3;00-900;Lichowice;(55)333-44-55;jer@wu.to;1990.03.23
Run Code Online (Sandbox Code Playgroud)
我需要在C中阅读.我有一些代码,但仅用于连接.
使用R包插入符号,如何根据train()函数的交叉验证结果生成ROC曲线?
说,我做以下事情:
data(Sonar)
ctrl <- trainControl(method="cv",
summaryFunction=twoClassSummary,
classProbs=T)
rfFit <- train(Class ~ ., data=Sonar,
method="rf", preProc=c("center", "scale"),
trControl=ctrl)
Run Code Online (Sandbox Code Playgroud)
训练函数遍历一系列mtry参数并计算ROC AUC.我想看看相关的ROC曲线 - 我该怎么做?
注意:如果用于采样的方法是LOOCV,那么rfFit将在rfFit$pred插槽中包含一个非空数据帧,这似乎正是我所需要的.但是,我需要用于"cv"方法(k-fold验证)而不是LOO.
另外:不,roc曾经包含在以前版本的插入符中的函数不是答案 - 这是一个低级函数,如果您没有每个交叉验证样本的预测概率,则不能使用它.
我在markdown中生成幻灯片,通过pandoc转换为html(with pandoc -s -S -t revealjs test.md -o test.html).
reveal.js框架允许2D设置:在幻灯片子集内"垂直"分组幻灯片,并水平分组幻灯片子集.在降价时,它可以像这样实现:
# Head1
## Below 1
text below 1
## Below 2
text below 2
# Head 2
Run Code Online (Sandbox Code Playgroud)
这会生成预期的输出.结果有四张幻灯片,排列如下:
[ Head 1 ] [ Head 2 ]
[ Below 1 ]
[ Below 2 ]
Run Code Online (Sandbox Code Playgroud)
不过,我想在"Head 1"幻灯片中有更多内容.这在reveal.js中是可能的,但pandoc未正确处理以下markdown:
# Head1
Head text 1
## Below 1
text below 1
## Below 2
text below 2
# Head 2
Run Code Online (Sandbox Code Playgroud)
因为幻灯片级别变为1而不是2,而不是四个幻灯片,我得到两个(每个级别1标题一个).我可以使用pandoc选项强制滑动级别为2:
pandoc -s -S -t revealjs test.md -o test.html --slide-level 2 …Run Code Online (Sandbox Code Playgroud) 我注意到了这个意外的功能:
foo <- list(whatever=1:10)
Run Code Online (Sandbox Code Playgroud)
现在,以下工作原理:
foo$wha
foo$w
foo$whateve
Run Code Online (Sandbox Code Playgroud)
但是,以下内容不是:
foo[["wha"]]
Run Code Online (Sandbox Code Playgroud)
这会产生意想不到的后果(对我而言是意料之外的),如果您有两个潜在的名称,例如" CXCL1 "和" CXCL11 ",并且您想通过检查知道CXCL1是否为空!is.null(foo$CXCL1),则即使CXCL1也会返回TRUE null,但CXCL11不是.
我的问题是:
foo$whatever和之间有什么区别foo[["whatever"]]?我想创建一个替换一些默认参数的包装函数.
这是我正在努力解决的问题的核心:
Error in localWindow(xlim, ylim, log, asp, ...) :
formal argument "cex" matched by multiple actual arguments
Run Code Online (Sandbox Code Playgroud)
现在有点上下文.假设我为这样的情节定义了一个包装函数:
myplot <- function(x, ... ) {
plot(x, cex= 1.5, ... )
}
Run Code Online (Sandbox Code Playgroud)
如果我打电话,myplot( 1:10, cex= 2 )我会得到上述错误.我知道我可以转到...清单
l <- list(...)
Run Code Online (Sandbox Code Playgroud)
然后我就能做到
if( is.null( l[["cex"]] ) ) l[["cex"]] <- 2
Run Code Online (Sandbox Code Playgroud)
但是,如何将此列表"插入"省略号参数?像(我知道这不起作用):
... <- l
Run Code Online (Sandbox Code Playgroud)
编辑:我可以在myplot定义中使用默认值(如@Thomas的答案所示),但我不想:函数接口将变得混乱.我想我可以像这样定义一个辅助函数:
.myfunchelper <- function( x, cex= 2.0, ... ) {
plot( x, cex= cex, ... )
}
myfunc <- function( x, ... …Run Code Online (Sandbox Code Playgroud) 我对打印指针值和数组有疑问。
int arr[5] = { 1, 2, 3, 4, 5 };
int * ptr = arr;
for (int i = 0; i < 5; i++) {
(*ptr) += 2;
ptr++;
printf("%d", (*ptr));
}
Run Code Online (Sandbox Code Playgroud)
以上是我首先输入的内容,但没有用。所以我擦除了printf行,并输入了一个新的代码。而且有效。
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
Run Code Online (Sandbox Code Playgroud)
我知道第二个为什么起作用,但仍然不明白第一个为什么不能起作用。
预期输出为3 4 5 6 7,但第一个代码的实际输出为2 3 4 5 -858993460
我就是这样做的:
df <- data.frame(a=1:200)
df$a <- NULL
df
Run Code Online (Sandbox Code Playgroud)
结果:
data frame with 0 columns and 200 rows
Run Code Online (Sandbox Code Playgroud)
只用一个命令就可以实现同样的目的吗?
所以我有这个数据框
df <- data.frame( A=1:10, B=LETTERS[1:10], C=letters[1:10], stringsAsFactors= F )
Run Code Online (Sandbox Code Playgroud)
我想在A = 11和C ="K"的数据框中添加一行,但我没有关于C列的信息.事实上,我不知道先验是什么其他列在那里数据框,A和B除外.这些缺失的列应该得到NA.我能想到的最好的是:
tmp <- rep( NA, ncol( df ) ) # Batman!
df <- rbind( df, tmp )
df[ nrow( df ), "A" ] <- 11
df[ nrow( df ), "B" ] <- "K"
Run Code Online (Sandbox Code Playgroud)
有更简单的方法吗?
给定data.frame:
foo <- data.frame(ID=1:10, x=1:10)
rownames(foo) <- LETTERS[1:10]
Run Code Online (Sandbox Code Playgroud)
我想重新排序由行名称定义的行的子集.但是,我想交换foo的行名.我可以
sel <- c("D", "H") # rows to reorder
foo[sel,] <- foo[rev(sel),]
sel.wh <- match(sel, rownames(foo))
rownames(foo)[sel.wh] <- rownames(foo)[rev(sel.wh)]
Run Code Online (Sandbox Code Playgroud)
但这很漫长而复杂.有更简单的方法吗?