原文链接:http://tecdat.cn/?p=6716

获得R问题的良好帮助的关键是提供最低限度工作的可重复示例(MWRE)。使用R制作MWRE非常简单,它将有助于确保那些帮助您识别错误来源的人,并理想地提交给您,以修复错误,而不是向您发送有用的代码。要拥有MWRE,您需要以下项目:

  • 产生错误的最小数据集
  • 生成数据所需的最小可运行代码,在提供的数据集上运行
  • 有关已使用的软件包,R版本和系统的必要信息
  • 一个seed值,如果随机特性是代码的一部分

让我们看看R中可用的工具,以帮助我们快速,轻松地创建这些组件。

生成最小数据集

这里有三个不同的选项:

  1. 使用内置R数据集
  2. 从头开始创建一个新的vector / data.frame
  3. 以可共享的方式输出您当前正在处理的数据

让我们依次看看每一个,看看R帮助我们做的工具。

内置数据集

R数据集中有一些规范的buit非常适合在帮助请求中使用。

  • mtcars
  • 鸢尾花

要查看R中的所有可用数据集,只需键入:data()。要加载任何这些数据集,只需使用以下内容:

data(mtcars)
head(mtcars)  # to look at the data
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

此选项适用于您知道在R中遇到命令时遇到问题的问题。如果您无法理解为什么您熟悉的命令无法处理数据,则此选项不是一个很好的选择。

 data(stulevel)
names(stulevel)
 [1] "X"           "school"      "stuid"       "grade"       "schid"      [6] "dist"        "white"       "black"       "hisp"        "indian"
[11] "asian"       "econ"        "female"      "ell"         "disab"
[16] "sch_fay"     "dist_fay"    "luck"        "ability"     "measerr"
[21] "teachq"      "year"        "attday"      "schoolscore" "district"
[26] "schoolhigh"  "schoolavg"   "schoollow"   "readSS"      "mathSS"
[31] "proflvl"     "race"

创建自己的数据

让我们创建一个学生考试成绩和人口统计学的模拟数据框架。

 head(Data)
  id gender mathSS readSS race
1  1 female  396.6  349.2    H
2  2   male  369.5  330.7    W
3  3 female  423.3  354.3    B
4  4   male  348.7  333.1    W
5  5   male  299.7  353.4    H
6  6 female  338.0  422.1    I

我们模拟了学生数据。 让我们使用快速绘图来查看变量之间的关系:


qplot(mathSS, readSS, data = Data, color = race) + theme_bw()

它看起来像比赛是相当均匀的分布和存在之间没有任何关系mathSSreadSS。对于某些应用程序,此数据已足够,但对于其他应用程序,我们可能希望获得更实际的数据。

table(Data$race)
A   B   H   I   W
192 195 202 203 208
cor(Data$mathSS, Data$readSS)
[1] -0.01236

输出您当前的数据

这里的最佳实践是创建您正在处理的数据的子集,然后使用该dput命令输出它。

dput(head(stulevel, 5))
structure(list(X = c(44L, 53L, 116L, 244L, 274L), school = c(1L,
1L, 1L, 1L, 1L), stuid = c(149995L, 13495L, 106495L, 45205L,
142705L), grade = c(3L, 3L, 3L, 3L, 3L), schid = c(495L, 495L,
495L, 205L, 205L), dist = c(105L, 45L, 45L, 15L, 75L), white = c(0L,
0L, 0L, 0L, 0L), black = c(1L, 1L, 1L, 1L, 1L), hisp = c(0L,
0L, 0L, 0L, 0L), indian = c(0L, 0L, 0L, 0L, 0L), asian = c(0L,
0L, 0L, 0L, 0L), econ = c(0L, 1L, 1L, 1L, 1L), female = c(0L,
0L, 0L, 0L, 0L), ell = c(0L, 0L, 0L, 0L, 0L), disab = c(0L, 0L,
0L, 0L, 0L), sch_fay = c(0L, 0L, 0L, 0L, 0L), dist_fay = c(0L,
0L, 0L, 0L, 0L), luck = c(0L, 1L, 0L, 1L, 0L), ability = c(87.8540493076978,
97.7875614875502, 104.493033823157, 111.671512686787, 81.9253913501755
), measerr = c(11.1332639734731, 6.8223938284885, -7.85615858883968,
-17.5741522573204, 52.9833376218976), teachq = c(39.0902471213577,
0.0984819168655733, 39.5388526976972, 24.1161227728637, 56.6806130368238
), year = c(2000L, 2000L, 2000L, 2000L, 2000L), attday = c(180L,
180L, 160L, 168L, 156L), schoolscore = c(29.2242722609726, 55.9632592971956,
55.9632592971956, 55.9632592971956, 55.9632592971956), district = c(3L,
3L, 3L, 3L, 3L), schoolhigh = c(0L, 0L, 0L, 0L, 0L), schoolavg = c(1L,
1L, 1L, 1L, 1L), schoollow = c(0L, 0L, 0L, 0L, 0L), readSS = c(357.286464546893,
263.904581222636, 369.672179143784, 346.595665384202, 373.125445669888
), mathSS = c(387.280282915207, 302.572371332695, 365.461432571883,
344.496386434725, 441.15810279391), proflvl = structure(c(2L,
3L, 2L, 2L, 2L), .Label = c("advanced", "basic", "below basic",
"proficient"), class = "factor"), race = structure(c(2L, 2L,
2L, 2L, 2L), .Label = c("A", "B", "H", "I", "W"), class = "factor")), .Names = c("X",
"school", "stuid", "grade", "schid", "dist", "white", "black",
"hisp", "indian", "asian", "econ", "female", "ell", "disab",
"sch_fay", "dist_fay", "luck", "ability", "measerr", "teachq",
"year", "attday", "schoolscore", "district", "schoolhigh", "schoolavg",
"schoollow", "readSS", "mathSS", "proflvl", "race"), row.names = c(NA,
5L), class = "data.frame")

生成的代码可以复制并粘贴到R ,它将自动按照描述自动构建数据集。

匿名化您的数据

也可能是您想要dput数据的情况,但您希望保持数据内容的匿名性。谷歌搜索提出了一个体面的功能,以实现这一目标:

anonym <- function(df) {if (length(df) > 26) {LETTERS <- c(LETTERS, paste(LETTERS, LETTERS, sep = ""))})}level.id.df <- function(df) {level.id <- function(i) {if (class(df[, i]) == "factor" | class(df[, i]) == "character") {sep = ".")} else if (is.numeric(df[, i])) {} else {column <- df[, i]}return(column)}DF <- data.frame(sapply(seq_along(df), level.id))return(DF)}df <- level.id.df(df)return(df)
}test <- anonym(stulevel)
head(test[, c(2:6, 28:32)])
                    B                 C                 D
1 0.00217632592657076  1.51160611230132 0.551020408163265
2 0.00217632592657076 0.135998696526593 0.551020408163265
3 0.00217632592657076  1.07322572705443 0.551020408163265
4 0.00217632592657076 0.455562880806568 0.551020408163265
5 0.00217632592657076  1.43813960635994 0.551020408163265
6 0.00217632592657076 0.151115261535106 0.551020408163265

创建示例

一旦我们得到了最小的数据集,我们就需要在该数据集上重现我们的错误。 

让我们看一个聚合数据的错误示例。

Data <- data.frame(id = seq(1, 1000), gender = sample(c("male", "female"), 1000, replace = TRUE), mathSS = rnorm(1000, mean = 400, sd = 60), readSS = rnorm(1000, mean = 370, sd = 58.3), race = sample(c("H", "B", "W", "I", "A"), 1000, replace = TRUE))myAgg <- Data[, list(meanM = mean(mathSS)), by = race]
Error: unused argument(s) (by = race)
head(myAgg)
Error: object 'myAgg' not found

为什么我会收到错误? 如果您将上述代码发送给某人,他们可以快速评估错误,如果他们知道您正在尝试使用data.table包,请查看错误。

library(data.table)
Data <- data.frame(id = seq(1, 1000), gender = sample(c("male", "female"), 1000, replace = TRUE), mathSS = rnorm(1000, mean = 400, sd = 60), readSS = rnorm(1000, mean = 370, sd = 58.3), race = sample(c("H", "B", "W", "I", "A"), 1000, replace = TRUE))Data <- data.table(Data)
myAgg <- Data[, list(meanM = mean(mathSS)), by = race]
head(myAgg)
   race meanM
1:    H 398.6
2:    B 405.1
3:    A 397.8
4:    W 395.7
5:    I 399.1

会话信息

但是,他们可能不知道这一点,所以我们需要提供最后一条信息。 要诊断错误,必须知道您正在运行的系统,工作区中加载了哪些软件包,以及您使用的R版本和给定软件包。

只需添加sessionInfo()功能的输出 。这很容易复制和粘贴或包含在knitr文档中。

sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252    attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     other attached packages:
[1] data.table_1.8.8 eeptools_0.2     ggplot2_0.9.3.1  knitr_1.2       loaded via a namespace (and not attached):[1] colorspace_1.2-2   dichromat_2.0-0    digest_0.6.3      [4] evaluate_0.4.3     formatR_0.7        grid_2.15.2       [7] gtable_0.1.2       labeling_0.1       MASS_7.3-23
[10] munsell_0.4        plyr_1.8           proto_0.3-10
[13] RColorBrewer_1.0-5 reshape2_1.2.2     scales_0.2.3
[16] stringr_0.6.2      tools_2.15.2  

非常感谢您阅读本文,有任何问题请在下面留言!

拓端tecdat|R语言中编写最小工作示例(MWRE)相关推荐

  1. 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

    最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...

  2. 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系

    最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...

  3. 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测

    最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...

  4. 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例

    最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...

  5. R语言中的广义线性模型(GLM)和广义相加模型(GAM):多元(平滑)回归分析保险资金投资组合信用风险敞口

    最近我们被客户要求撰写关于信用风险敞口的研究报告,包括一些图形和统计输出. 在之前的课堂上,我们已经看到了如何可视化多元回归模型(带有两个连续的解释变量).在此,目标是使用一些协变量(例如,驾驶员的年 ...

  6. 在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析

    广义相加模型(GAM:Generalized Additive Model),它模型公式如下:有p个自变量,其中X1与y是线性关系,其他变量与y是非线性关系,我们可以对每个变量与y拟合不同关系,对X2 ...

  7. 二次拟合r方_拟合R语言中的多项式回归

    原标题:拟合R语言中的多项式回归 让我们看一个经济学的例子:假设你想购买一定数量q的特定产品.如果单价是p,那么你会支付总金额y.这是一个线性关系的典型例子.总价格和数量成正比. 如下所示: 但购买和 ...

  8. 拓端tecdat|bilibili视频流量数据潜望镜

    最近我们被客户要求撰写关于bilibili视频流量的研究报告,包括一些图形和统计输出. 最新研究表明,中国有超过7亿人在观看在线视频内容.Bilibili,被称为哔哩哔哩或简称为B站,是中国大陆第二个 ...

  9. R语言中使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据

    原文链接:http://tecdat.cn/?p=20828 本文使用lasso或非凸惩罚拟合线性回归,GLM和Cox回归模型的正则化,特别是_最小_最_大凹_度_惩罚_函数_(MCP)_和光滑切片绝 ...

  10. r语言中检测异常值_R中的异常值检测

    r语言中检测异常值 介绍 (Introduction) An outlier is a value or an observation that is distant from other obser ...

最新文章

  1. Design Compiler指南——设计综合过程
  2. 表面上在帮女朋友拍照,其实镜头瞄准的是......
  3. Bootstrap系列 -- 36. 向上弹起的下拉菜单
  4. (转)Struts2的标签库
  5. 哈啰出行架构调整:两轮电动车租售平台将升级为独立事业部
  6. Nagios 监控系统架构
  7. MONO Jexus部署最佳体验
  8. leetcode -- Reverse Nodes in k-Group
  9. 从12306网站新验证码看Web验证码设计与破解
  10. MyBatis使用Mapper动态代理开发Dao层
  11. 手机远程共享计算机文件,电脑如何共享文件到手机
  12. 液晶电视的驱动板与逻辑板维修
  13. 【DL学习笔记06】深度学习入门——基于Python的理论与实现(ch07: 卷积神经网络 CNN)
  14. 智能视频抠图_抠图扣视频,AI人工智能还能这样玩!
  15. 代码自动生成-宏递归思想
  16. edvac是商用计算机吗,EDVAC(eniac与edvac的区别)
  17. PADS如何导出BOM清单
  18. linux查看服务器品牌和型号,linux 查看服务器型号
  19. 我的世界无限法则服务器推荐,我的世界无限法则怎么玩
  20. 新零售智慧门店是什么 新零售智慧门店如何建设

热门文章

  1. [C# 基础知识系列]专题十一:匿名方法解析
  2. xFire入门(eclipse、tomcat环境)
  3. matlab求smith标准型
  4. AWS CSAA -- 04 AWS Object Storage and CDN - S3 Glacier and CloudFront(二)
  5. [编程] C语言变量和数据类型总结练习题
  6. 在存储过程中执行别的存储过程并获取其返回的结果集
  7. 转---Oracle10G的Sga_max_size和sga_target应该如何设置啊!
  8. 为什么象网络蚂蚁这样的多线程程序可以加快下载速度?
  9. 敏捷思维-架构设计中的方法学(11)精化和合并
  10. [UnityShader基础]04.ColorMask