Questions tagged «r»

R是一种免费的开源编程语言和软件环境,用于统计计算,生物信息学,可视化和通用计算。请提供最少且可复制的示例以及所需的输出。使用`dput()`作为数据,并通过`library()`调用指定所有非基本包。不要为数据或代码嵌入图片,而应使用缩进的代码块。对于统计相关的问题,请使用https://stats.stackexchange.com。

23
如何制作出色的R可重现示例
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 与同事讨论性能,教学,发送错误报告或在邮件列表以及堆栈溢出此处寻求指导时,经常会问到一个可重复的示例,并且总是很有帮助。 您建立出色范例的秘诀是什么?如何从中粘贴数据结构[R以文本格式?您还应该包括哪些其他信息? 在另外还有其他招数来使用dput(),dump()或structure()?您何时应包含library()或require()声明?其中保留的话应该避免一个,此外c,df,data等? 一个人如何成就伟大 [R 可复制的例子?
2473 r  r-faq 

19
如何按多个列对数据框进行排序
我想按多个列对data.frame进行排序。例如,对于下面的data.frame,我想按列z(降序)然后按列b(升序)排序: dd <- data.frame(b = factor(c("Hi", "Med", "Hi", "Low"), levels = c("Low", "Med", "Hi"), ordered = TRUE), x = c("A", "D", "A", "C"), y = c(8, 3, 9, 9), z = c(1, 1, 1, 2)) dd b x y z 1 Hi A 8 1 2 Med D 3 1 …
1316 r  sorting  dataframe  r-faq 


10
分组功能(tapply,by,aggregate)和* apply系列
每当我想在R中执行“ map” py任务时,我通常都会尝试使用该apply系列中的函数。 但是,我从未完全理解它们之间的区别-{ sapply,lapply等等} 如何将函数应用于输入/分组输入,输出将是什么样,甚至输入是什么-所以我经常只是遍历所有这些,直到我得到我想要的。 谁能解释什么时候使用哪一个? 我目前(可能不正确/不完整)的理解是... sapply(vec, f):输入是向量。输出是向量/矩阵,其中element i是f(vec[i]),如果f有多元素输出,则为您提供矩阵 lapply(vec, f):与相同sapply,但输出是列表? apply(matrix, 1/2, f):输入是一个矩阵。输出是一个向量,其中element i是f(矩阵的行/ col i) tapply(vector, grouping, f):输出是一个矩阵/数组,其中矩阵/数组中的元素是向量f分组g中的值,并g被推送到行/列名 by(dataframe, grouping, f):让g成为一个分组。适用f于组/数据框的每一列。漂亮地打印f每列的分组和值。 aggregate(matrix, grouping, f):类似于by,但不是将输出漂亮地打印出来,聚合将所有内容粘贴到一个数据框中。 附带的问题:我还没有学会摆弄或重塑-是否会全部取代plyr或reshape全部取代?
1040 r  lapply  sapply  tapply  r-faq 

20
按名称删除数据框列
我想从数据框中删除许多列。我知道我们可以使用类似的方法分别删除它们: df$x <- NULL 但是我希望用更少的命令来做到这一点。 另外,我知道我可以使用整数索引删除列,如下所示: df <- df[ -c(1, 3:6, 12) ] 但是我担心我的变量的相对位置可能会改变。 考虑到R的强大功能,我认为可能有比逐一删除每一列更好的方法。
874 r  dataframe  r-faq 


3
data.table vs dplyr:一个人可以做得很好,另一个人不能做得不好吗?
总览 我相对熟悉data.table,而不是那么熟悉dplyr。我已经阅读了一些出现在SO上的dplyr插图和示例,到目前为止,我的结论是: data.table且dplyr速度可比,除非有很多(即> 10-100K)组,并且在某些其他情况下(请参见下面的基准) dplyr 具有更多可访问的语法 dplyr 抽象(或将)潜在的数据库交互 功能上有一些细微的差异(请参见下面的“示例/用法”) 我认为2.不太重要,因为我相当熟悉它data.table,尽管我知道这对新手和老手来说都是一个很大的因素。我想避免争论哪个更直观,因为从我已经熟悉的人的角度来看,这与我提出的具体问题无关data.table。我还想避免讨论“更直观”如何导致更快的分析(当然是正确的,但又不是我对此最感兴趣的内容)。 题 我想知道的是: 对于熟悉软件包的人来说,是否有分析任务更容易用一个或另一个软件包编写代码(即,要求的击键与要求的深奥程度的某种组合,每个击键都是一件好事)。 在一个程序包中,是否有比其他程序更有效地执行分析任务(即大于2倍)? 最近的一个SO问题使我对这个问题进行了更多的思考,因为到那时为止,我认为dplyr提供的功能超出了我已经可以做得到的范围data.table。这是dplyr解决方案(Q末的数据): dat %.% group_by(name, job) %.% filter(job != "Boss" | year == min(year)) %.% mutate(cumu_job2 = cumsum(job2)) 这比我尝试破解data.table解决方案要好得多。也就是说,好的data.table解决方案也相当不错(感谢Jean-Robert,Arun,并请注意,在这里,我赞成使用单一语句而不是严格的最佳解决方案): setDT(dat)[, .SD[job != "Boss" | year == min(year)][, cumjob := cumsum(job2)], by=list(id, job) ] 后者的语法可能看起来很深奥,但是如果您习惯了data.table(例如,不使用一些更深奥的技巧),它实际上非常简单。 理想情况下,我希望看到的是一些很好的示例,它们的方式dplyr或data.table方法实质上更简洁,或性能更好。 例子 用法 …
758 r  data.table  dplyr 



7
我们如何制作xkcd样式图?
显然,人们已经弄清楚了如何在Mathematica和LaTeX中制作xkcd样式图。我们可以在R中做到吗?ggplot2-ers?一个geom_xkcd和/或theme_xkcd? 我猜在基本图形中,par(xkcd = TRUE)?我该怎么做? 作为ggplot2中的第一个选项(下面将更详细地介绍),将jitter参数添加到一行可以使手绘效果更好。所以- ggplot(mapping=aes(x=seq(1,10,.1), y=seq(1,10,.1))) + geom_line(position="jitter", color="red", size=2) + theme_bw() 这是一个很好的例子-但是轴和字体看起来比较复杂。字体显示为已解决(如下)。处理轴的唯一方法是将其消隐并手工拉入吗?有没有更优雅的解决方案?特别是在ggplot2中,是否可以将新主题系统中的element_line修改为采用类似抖动的参数?
696 r  ggplot2  plot 

8
ggplot2中的旋转和间隔轴标签
我有一个图,其中x轴是标签长的一个因素。虽然可能不是理想的可视化效果,但现在我想简单地将这些标签旋转为垂直。我已经用下面的代码弄清楚了这部分,但是如您所见,标签并不完全可见。 data(diamonds) diamonds$cut <- paste("Super Dee-Duper",as.character(diamonds$cut)) q <- qplot(cut,carat,data=diamonds,geom="boxplot") q + opts(axis.text.x=theme_text(angle=-90))
668 r  ggplot2  labels 

9
如何在不丢失信息的情况下将因子转换为整数\数字?
当我将因子转换为数字或整数时,我得到的是底层的级别代码,而不是数值。 f <- factor(sample(runif(5), 20, replace = TRUE)) ## [1] 0.0248644019011408 0.0248644019011408 0.179684827337041 ## [4] 0.0284090070053935 0.363644931698218 0.363644931698218 ## [7] 0.179684827337041 0.249704354675487 0.249704354675487 ## [10] 0.0248644019011408 0.249704354675487 0.0284090070053935 ## [13] 0.179684827337041 0.0248644019011408 0.179684827337041 ## [16] 0.363644931698218 0.249704354675487 0.363644931698218 ## [19] 0.179684827337041 0.0284090070053935 ## 5 Levels: 0.0248644019011408 0.0284090070053935 ... 0.363644931698218 as.numeric(f) …
598 r  casting  r-faq 

16
在R中的同一图中绘制两个图
我想在同一图中绘制y1和y2。 x <- seq(-2, 2, 0.05) y1 <- pnorm(x) y2 <- pnorm(x, 1, 1) plot(x, y1, type = "l", col = "red") plot(x, y2, type = "l", col = "green") 但是当我这样做时,它们并没有一起绘制在同一图中。 在Matlab中可以做到hold on,但是有人知道如何在R中做到这一点吗?
570 r  plot  ggplot2  r-faq 


18
我应该如何处理“软件包'xxx'不可用(对于R版本xyz)”警告?
我尝试使用安装软件包 install.packages("foobarbaz") 但收到警告 Warning message: package 'foobarbaz' is not available (for R version x.y.z) R为什么不认为该软件包可用? 另请参阅以下有关此问题的特定实例的问题: 我的软件包不适用于R 2.15.2 软件包'Rbbg'不可用(对于R版本2.15.2) 软件包不可用(对于R版本2.15.2) 软件包doMC不适用于R版本3.0.0警告install.packages 依赖性'Rglpk'不适用于软件包'fPortfolio' 如果我们的R版本无法使用软件包,该怎么办? R的bigvis软件包是否不适用于R版本3.0.1? 软件包'syncwave'/'mvcwt'不可用(对于R版本3.0.2)不可用软件包'diamonds' (对于R版本3.0.0)R 的plyr软件包不适用于R版本3.0.2吗? 没有在R 64 3.0.2上未安装的软件包bigmemory 软件包“ makeR”不可用(对于3.0.2版) 软件包“ RTN”不可用(对于R版本3.0.1) 安装geoR软件包 软件包“ twitterR”不可用(对于R版本3.1.0) 如何安装“ Rcpp,软件包”?我收到“程序包不可用” 程序包“数据集”不可用(对于R版本3.1.1) “程序包'rhipe”不可用(对于R版本3.1.2)”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.