【问题标题】:Creating dispersion plots from a data frame从数据框中创建分散图
【发布时间】:2014-01-09 05:47:34
【问题描述】:

我有数据框mydata_x:

   sex age height_seca1 height_chad1 height_DL weight_alog1
1    F  19         1800         1797       180           70
2    F  19         1682         1670       167           69
3    F  21         1765         1765       178           80
4    F  21         1829         1833       181           74
5    F  21         1706         1705       170          103
6    F  18         1607         1606       160           76
7    F  19         1578         1576       156           50
8    F  19         1577         1575       156           61
9    F  21         1666         1665       166           52
10   F  17         1710         1716       172           65
11   F  28         1616         1619       161           66
12   F  22         1648         1644       165           58
13   F  19         1569         1570       155           55
14   F  19         1779         1777       177           55
15   M  18         1773         1772       179           70
16   M  18         1816         1809       181           81
17   M  19         1766         1765       178           77
18   M  19         1745         1741       174           76
19   M  18         1716         1714       170           71
20   M  21         1785         1783       179           64
21   M  19         1850         1854       185           71
22   M  31         1875         1880       188           95
23   M  26         1877         1877       186          106
24   M  19         1836         1837       185          100
25   M  18         1825         1823       182           85
26   M  19         1755         1754       174           79
27   M  26         1658         1658       165           69
28   M  20         1816         1818       183           84
29   M  18         1755         1755       175           67

我的目标是为包含连续数据的mydata_x 的每一列(即除了age 列)创建单独的直方图、箱线图和密度分布,并将这些图作为.jpeg 文件保存到使用该文件的工作目录中命名结构:hist_mydata_x_ageboxplot_mydata_x_height_seca1density_mydata_x_height_chad1。还要确保为地块正确标记标题。我被要求不要使用任何“额外”的 R 包。 任何帮助都将不胜感激,因为我尝试了许多方法但成功有限。

【问题讨论】:

  • 请发布您迄今为止尝试过的内容以及遇到问题的地方。
  • 我正在尝试使用以下代码将 hist 函数串在一起:pts = list(x = hist[,mydata_2$age], y = hist[,mydata_2$height_seca1]) hist 中的错误[, mydata_2$age] : 'closure' 类型的对象不是子集
  • 我试图获得不止一个直方图,而不是一次计算一个。从某种意义上说,将功能串在一起。函数 do.call 有用吗?我尝试了以下代码:pts = do.call(, list(x = hist$age, y = hist$height_seca1)) 但我得到了同样的错误。

标签: r


【解决方案1】:

你的意思是这样的吗?

sapply(names(mydata_x)[-1], function(name){
  # Histogram
  h.name <- paste0("hist_mydata_x_", name)
  png(paste0(h.name,".jpg"))
  hist(mydata_x[,name], main=h.name, xlab=name)
  dev.off()
  # Boxplot
  b.name <- paste0("boxplot_mydata_x_", name)
  png(paste0(b.name, ".jpg"))
  boxplot(mydata_x[,name], main=b.name, xlab=name)
  dev.off()
  # Density
  d.name <- paste0("density_mydata_x_", name)
  png(paste0(d.name, ".jpg"))
  plot(density(mydata_x[,name]), main=d.name)
  dev.off()
})

这里 mydata_x 是 data.frame ,其中包含来自您原始问题的数据。 sapply(names(mydata_x)[-1], function(name){...})mydata_x 的所有列执行函数,除了 sex(只要它包含因子)。

每个列的函数生成直方图、箱线图和密度图的专有名称,并将它们绘制到png() 设备,因此它们存储在当前工作目录中。

函数生成 15 个图(5 列 x 3 种类型)。例如hist_mydata_x_height_chad1.jpg:

【讨论】:

  • 我不确定如何实现该代码。你能不能再分解一下。可能在 R 中显示图?
猜你喜欢
  • 2013-02-13
  • 2021-03-27
  • 2021-08-02
  • 2020-06-23
  • 1970-01-01
  • 1970-01-01
  • 2018-10-06
  • 2020-10-11
  • 2020-10-12
相关资源
最近更新 更多