我想知道是否有人可以帮我在函数中使用变量名.我已经整理了一个点图,它对变量进行排序然后生成一个位图,但是我无法R将变量名称传递给plot标题.
示例数据
id<-c(1,2,3)
blood<-c(1,2,10)
weight<-c(1,2,13)
mydata<-as.data.frame(cbind(id,blood,weight))
mydata$blood
#######SORTED DOT PLOT####
Dplotter<-function (id,x,Title=""){
if (is.null(Title)) {Title=""} else {Title=Title}
DIR<-paste("C:/temp/WholePlots/New/",Title,".bmp",sep="")
D<-as.data.frame(cbind(id,x))
x1<-as.data.frame(D[order(x),])
bmp(DIR)
dotchart(x1$x,labels=id,main=Title,pch=16)
dev.off()
}
###############
Dplotter(mydata$id,mydata$blood,"Blood")
Dplotter(mydata$id,mydata$weight,"Weight")
Run Code Online (Sandbox Code Playgroud)
在函数的第二行,我想传递变量名称,例如
`if (is.null(Title)) {Title=varname(x)} else {Title=Title}`
Run Code Online (Sandbox Code Playgroud)
这样我就不必在函数Title字段中输入"Blood"(例如Dplotter(mydata $ id,mydata $ blood)
基本上,如何在函数中粘贴变量名?如果可以从标题中取出数据集名称(没有附加数据集,我被告知这是不好的做法)会更好,这样mydata$blood你就可以获得标题中的"鲜血".
我没能找到一个简单的解决方案来粘贴函数中的变量名.您可以猜测,将变量名称放在
paste()函数中会返回变量的值(以便绘图标题用值而不是变量名称填充).
我还希望进一步自动化该功能,这样我就可以放置数据集和ID,然后为数据集中的每个变量重复该功能.显然,这需要首先解决问题1,否则标题和文件名都会遇到问题.
我在Rstudio上发布了一个类似的问题,但我认为要求堆栈用户也是有用的.
我的问题基本上是这样的:你如何使用嵌入式R图形创建其他人可以轻松评论的文档?
在过去的几个月里,我一直想知道如何在我的公司内快速传播R分析而不必从R中粘贴大量的图表和表格.我对嵌入R代码并不感兴趣,但我确实希望能够自定义从我的情节开始,在它周围写下文字(标题,标题和段落).包R2wd具有巨大的潜力,但Rstudio正在使HTML,pdf和Latex的高质量文档的整体制作更加直观.这些格式通常更灵活,看起来更好,并充分利用R的功能.
通常(但不一定正确)与Word相关联的功能使我(并且我可能错了)不太可能切换到这些其他格式.分析完成后,将其上传到公共驱动器上或以电子方式传播,然后同事/主管/可以:
这两个函数在移动发布报告时非常重要(特别是以前未经过审核的新类型的分析),我想知道如何以Rstudio目前支持的格式(例如HTML,latex) ,pdf),或者你通常如何处理这些问题.我想切换到更好的格式,如pdf,但我不知道这是否意味着失去上述两个功能.
我在创建带有汇总数据的堆积条形图时遇到了麻烦.当处理来自其他人的报告的聚合表时,我通常使用Excel,但我想开始在R中做我的所有图表,可能使用格子或ggplot.在Excel中,执行以下聚合数据的堆叠条形图需要几次单击(插入,列图表,堆积列),您将得到类似的结果.
.
除了想在这张图表中RI也希望用ggplot的刻面,即把两个堆叠barcharts并排ggplot比较两个组(A和B).I've与其他图表发挥各地,这似乎是最好的选择.这是数据.Excel图表仅显示组A(数字是百分比).
D<-as.data.frame(structure(list(Group = c("A", "A", "A", "A", "A",
"A", "B", "B", "B", "B", "B", "B"
), Education = c("NVQ Level 4 and above", "NVQ Level3", "NVQ Level 2",
"Below NVQ Level 2", "Other qualification", "No qualification",
"NVQ Level 4 and above", "NVQ Level3", "NVQ Level 2", "Below NVQ Level 2",
"Other qualification", "No qualification"), Full.Time = c(47,
27, 23, 17, 18, 9, 36, 26, 22, 22, 27, 12), PT.16.hours = c(20,
24, 22, 18, 18, 12, 22, 21, …Run Code Online (Sandbox Code Playgroud) 任何人都可以帮我复制R中的这些相对风险计算(及其置信区间)吗?
这里描述了Stata中使用的类似过程.任何人都可以告诉我如何在R中做到这一点(我的数据有集群和分层,但我采取了一个更简单的例子)?我已经尝试了relrisk.est功能,但我宁愿使用调查包,因为它处理非常复杂的设计.我还想比较Stata和R估计.我在这里建议使用泊松.
###STATA CODE
use http://www.ats.ucla.edu/stat/stata/faq/eyestudy
tabulate carrot lenses
*same as R binomial svyglm below
xi: glm lenses carrot, fam(bin)
*switch reference code
char carrot[omit] 1
xi: glm lenses i.carrot, fam(poisson) link(log) nolog robust eform
###R
library(foreign)
library(survey)
D<-read.dta("http://www.ats.ucla.edu/stat/stata/faq/eyestudy.dta")
table(D$lenses,D$carrot)
D$wgt<-rep(1,nrow(D))
Dd<-svydesign(id=~1,data=D,weights=~wgt)
#change category and eform....?
svyglm(lenses~carrot,Dd,family=binomial)
svyglm(lenses~carrot,Dd,family=quasipoisson(log))
Run Code Online (Sandbox Code Playgroud) 我知道您可以在Google文档上发布电子表格,然后在R中导入它们.但是,假设我有一个函数或一些我想在R中读取的代码(就像在源函数中一样).例如,您如何阅读存储在Google文档中的所有代码?
https://docs.google.com/document/edit?id=1f11rcVs9AtVcgOyiP0lV04yq9hshVDIPx93lA0ItFvQ
我不认为这已经发表,但它只是举个例子.
基本上我想:
在R中创建一个函数(为了比较,请参见下面的示例)
将其上传到Google文档并与拥有该链接的任何人共享,以便我无需通过R或Google文档等登录...
通过像source()这样的命令读取它,无论我想要什么
我的兴趣不是阅读数据而是阅读功能.当我不在同一台计算机/服务器上时,它会更快地导入我自己的功能.
有任何想法吗?
非常感谢
PS statsmethods.net的函数示例
mysummary <- function(x,npar=TRUE,print=TRUE) {
if (!npar) {
center <- mean(x); spread <- sd(x)
} else {
center <- median(x); spread <- mad(x)
}
if (print & !npar) {
cat("Mean=", center, "\n", "SD=", spread, "\n")
} else if (print & npar) {
cat("Median=", center, "\n", "MAD=", spread, "\n")
}
result <- list(center=center,spread=spread)
return(result)
}
Run Code Online (Sandbox Code Playgroud) 你知道是否有任何计划在R中为所有包引入并行编程?我知道一些发展,如R-revolution和并行编程包,但它们似乎有专门的功能,取代了最流行的功能(线性编程等).然而,关于R的一个好处就是大量的专用软件包每天支持并且使复杂且耗时的分析非常容易运行.其中许多使用非常流行的函数,例如广义线性模型,但也使用结果进行额外的计算和比较,最后对输出进行排序.据我所知,你需要定义一个函数的哪些部分可以在并行编程中运行,所以这可能是为什么大多数专业的R包没有这个功能,除非编辑代码,否则不能拥有它.
是否有任何计划(或任何软件包)使所有最流行的R函数能够在并行处理中运行,以便包含这些功能的所有不太流行的函数可以在并行处理中运行?例如,包difR使用glm函数来实现其大多数功能; 如果glm软件包能够在所有多处理器机器上并行处理(或重新编写,然后在新的R版本中发布)运行,那么就不需要重新编写difR软件包,这样就可以运行一些借助Windows PC上的并行编程实现其最繁琐的程序.