使用predict()一个可以获得对于给定模型y的自变量(x)的特定值的因变量()的预测值.是否有任何预测x给定的函数y?
例如:
kalythos <- data.frame(x = c(20,35,45,55,70),
n = rep(50,5), y = c(6,17,26,37,44))
kalythos$Ymat <- cbind(kalythos$y, kalythos$n - kalythos$y)
model <- glm(Ymat ~ x, family = binomial, data = kalythos)
Run Code Online (Sandbox Code Playgroud)
如果我们想知道模型的预测值x=50:
predict(model, data.frame(x=50), type = "response")
Run Code Online (Sandbox Code Playgroud)
例如,我想知道哪个x是y=30.
我想从正态分布中采样50,000个值,其中mean = 0和sd -1.但我想将值限制为[-3,3].我已编写代码来执行此操作,但不确定它是否最有效?希望得到一些建议.
lower <- -3
upper <- 3
x_norm<-rnorm(75000,0,1)
x_norm<-x_norm[which(x_norm >=lower & x_norm<=upper)]
repeat{
x_norm<-c(x_norm, rnorm(10000,0,1))
x_norm<-x_norm[which(x_norm >=lower & x_norm<=upper)]
if(length(x_norm) >= 50000){break}
}
x_norm<-x_norm[1:50000]
Run Code Online (Sandbox Code Playgroud) 我试图在Rcpp函数的双精度输出中打印更多数字,但无法弄清楚如何...我看过如何使用cout以完全精度打印双值?通用C++答案的其他地方,但我看不出怎么做Rcpp,除了使用printf,我认为是最后的手段......
require(inline)
code <- '
double x=1.0;
std::cout.precision(10); // compiles but does nothing
Rcpp::Rcout.precision(10); // compiles but does nothing
printf("(1) %1.10lf\\n",x); // works but bad practice
Rcpp::Rcout << "(2) " << x << std::endl;
Rcpp::Rcout << "(3) " << std::setprecision(10) << x << std::endl;
return Rcpp::wrap(0);
'
fun <- rcpp(sig=c(v=0),body=code,includes="#include <iomanip>")
fun(1)
## (1) 1.0000000000
## (2) 1
## (3) 1
## [1] 0
Run Code Online (Sandbox Code Playgroud) 该knitr软件包最近添加了新的notangle晕影引擎,例如knitr::rmarkdown_notangle,允许禁用晕影块的评估.这里knitr描述了用于小插曲的一般过程,而具体notangle功能在该问题的答案中描述.
我的问题是我不能让这个工作.我可以通过在目录中R CMD build包含.html输出来传递它vignettes(我也放了一个副本inst/doc),但R CMD check除非我指定--no-build-vignettes,否则我无法通过它,或者除非我将rmarkdown_notangle引擎更改回来rmarkdown.
我已经构建了一个简单的包,其中包含以下插图(in vignettes/notangle.rmd):它可以在这里找到.
<!--
%\VignetteEngine{knitr::rmarkdown_notangle}
%\VignetteIndexEntry{Supplementary Materials}
-->
A silly little vignette.
```{r}
2+2
```
Run Code Online (Sandbox Code Playgroud)
我的DESCRIPTION文件包括
Suggests:
knitr,
VignetteBuilder: knitr
BuildVignettes: yes
Run Code Online (Sandbox Code Playgroud)
当我试着奔跑时,R CMD check我得到了
* checking re-building of vignette outputs ... NOTE
Error in re-building vignettes: …Run Code Online (Sandbox Code Playgroud) 这是我的虚拟代码:
set.seed(1)
df <- data.frame(xx=sample(10,6),
yy=sample(10,6),
type2=c('a','b','a','a','b','b'),
type3=c('A','C','B','A','B','C')
)
ggplot(data=df, mapping = aes(x=xx, y=yy)) +
geom_point(aes(shape=type3, fill=type2), size=5) +
scale_shape_manual(values=c(24,25,21)) +
scale_fill_manual(values=c('green', 'red'))
Run Code Online (Sandbox Code Playgroud)
结果图有一个图例,但它的'type2'部分并不反映fill价值尺度- 它是否符合设计?

一位同事问我这个,我一直在努力.
假设我想定义一个函数,它将一个表达式(比如说x^2具体性)作为一个参数并将该参数传递给curve().
如果我想以简单的方式做到这一点,我就跑了
curve(x^2,from=0,to=3)
Run Code Online (Sandbox Code Playgroud)
它工作正常.
假设我尝试设置一个包装函数(假设除了绘制曲线之外,我还想在包装器中做其他事情):
f <- function(g) {
curve(g,from=0,to=3)
}
Run Code Online (Sandbox Code Playgroud)
如果我传递一个函数,这是有效的:
f(function(x) x^2)
Run Code Online (Sandbox Code Playgroud)
如果我试图传递x^2,当R试图评估表达式时,它会失败:
f(x^2)
## Error in eval(expr, envir, enclos) (from #2) : object 'x' not found
Run Code Online (Sandbox Code Playgroud)
我可以尝试通过substitute在函数内使用来阻止它:
f0 <- function(g) {
str(substitute(g))
curve(substitute(g),from=0,to=3)
}
f0(x^2)
## language x^2
## Error in curve(substitute(g), from = 0, to = 3) (from #3) :
## 'expr' must be a function, or a call or an expression containing 'x'
Run Code Online (Sandbox Code Playgroud)
好吧,这表明也许我应该尝试
f <- …Run Code Online (Sandbox Code Playgroud) 当在R中执行logit回归时,可以在优化算法与coefficients()函数收敛(或不收敛)之后获得系数:
library(MASS)
data(menarche)
glm.out = glm(cbind(Menarche, Total-Menarche) ~ Age,
family=binomial(logit), data=menarche)
coefficients(glm.out)
## (Intercept) Age
## -21.226395 1.631968
Run Code Online (Sandbox Code Playgroud)
有没有办法获得优化算法的每个步骤的系数来跟踪其步骤?
我想绘制水平小提琴图(因为我的标签很长).我的设计限制是:
f1),每个facet(f2)的多个类别(所以我想使用aes(x=f2)和facet_wrap(~f1)scales="free")facet_wrap()(排除一些切面技巧)不幸的是scales="free",coord_flip()目前(并且在可预见的未来)不兼容.
这个相关问题的答案表明(1)黑客攻击一个新的水平地貌; (2)交换x和y(正如所指出的那样,它只适用于散点图等对称的geoms); (3)放弃和继续传统的布局.
想法?
set.seed(101)
library("plyr")
dd <- expand.grid(f1=factor(1:2),
f2=paste("inconveniently long label",1:2))
dd2 <- ddply(dd,c("f1","f2"),
function(x)
data.frame(y=rnorm(100,
mean=10*(as.numeric(x$f2)),
sd=10^(as.numeric(x$f1)))))
library("ggplot2")
Run Code Online (Sandbox Code Playgroud)
我的选择似乎是(1)带有scale="free"不方便的(横向)标签:
ggplot(dd2,aes(x=f2,y=y))+facet_wrap(~f1,scale="free")+geom_violin()
Run Code Online (Sandbox Code Playgroud)
(2)有coord_flip(),不方便的尺度
ggplot(dd2,aes(x=f2,y=y))+facet_wrap(~f1)+geom_violin()+coord_flip()
Run Code Online (Sandbox Code Playgroud)
尝试两个(ggplot(dd2,aes(x=f2,y=y))+facet_wrap(~f1,scale="free")+geom_violin()+coord_flip())给出
ggplot2目前不支持使用非笛卡尔坐标或coord_flip的自由音阶.
其他想法:
geom_errorbarh)有明确的水平版本; 我可以自己破解geom_violinh......geom_ribbon()来破解小提琴情节,但是它使用了分面,使其与facet_wrap()对于它的价值,这就是我的真实情节(目前):
我正在尝试在两个数据集之间的R中进行模糊逻辑联接:
config我想使用该name列在两个数据集之间进行联接。但是,该name列在数据集中可能包含其他字符或前导字符,或者在较大的单词内部包含一个单词。因此,例如,如果我们查看这两个数据集,我希望名称OPAL加入OPALAS,而SAUSALITO Y加入SAUSALITO。
Dataset1:
Name Config
ALTO D BB
CONTRA ST
EIGHT A DD
OPALAS BB
SAUSALITO Y AA
SOLANO J ST
Dataset2:
Name Age Rank
ALTO D 50 2
ALTO D 20 6
CONTRA 10 10
CONTRA 15 15
EIGHTH 18 21
OPAL 19 4
SAUSALITO 2 12
SOLANO 34 43
Run Code Online (Sandbox Code Playgroud)
数据集2汇总代码
Data2a <- summaryBy(Age ~ Name,FUN=c(mean), data=Data2,na.rm=TRUE)
Data2b <- summaryBy(Rank ~ Name,FUN=c(sum), data=Data2,na.rm=TRUE)
Data2 <- data.frame(Data2a$Name, Data2a$Age.mean, Data2b$Rank.sum)
Desired Outcome:
Name …Run Code Online (Sandbox Code Playgroud) 我一直在服用的在线课程中教师总是做以下获得,也就是说,该列Col1从一个data.frame对象Dat:
library(dplyr)
unlist(select(Dat, Col1))
Run Code Online (Sandbox Code Playgroud)
为什么不简单地跑Dat$Col1?我注意到两种结果的"表述"存在差异,但这两种形式之间是否存在其他重大差异?任何操作都会为两者产生相同的产品?