多绘图功能R.

时间:2014-09-22 17:03:55

标签: r function plot

我是R的新手,并且一直试图通过谷歌和论坛找到解决方案。 我的问题:我有一个数据集,我需要根据年龄进行绘图。在40种不同的条件下,有超过1000个变量具有不同的测量值。 看起来像这样:

Age   Variables1  Variable2 (....) Variable1000 > 
 |        |
 |        |
 v        v

我需要做的是将每个变量列的条件(年龄)绘制成不同的图(所有这些只是散点图)。更重要的是,我希望输出仅限于那些具有正趋势线系数的变量。

所以目前我有这个非常丑陋的代码,基本上是我真正需要的草稿。

plotest <- function(lung){
  # need to add the condition of abline function coefficient > 0 before plotting    
  plot(lung$Age, lung$hsa.let.7a.1, xlab = "Age", ylab = "miRNA")
  abline(lm(lung$hsa.let.7a.1 ~ lung$Age), col= "red")
  return(plot)
}
par(mfrow=c(2,2))
for (i in lung{plotest(i)})

我知道这大多是错的。很抱歉可怕的一切。

任何人都可以将我引向任何来源,我可能忽略了如何在如此大的数据集中指定范围?和功能语法?我做了一些Python,但发现R在这方面更加混乱...

谢谢大家, 保罗

1 个答案:

答案 0 :(得分:0)

这应该与你要求的非常接近,尽管你要用1000个图表做的事情超出了我的范围。

# make up some data
x <- seq(1,10,len=100)
set.seed(1)    # for reproducible example
df <- data.frame(x,y1=1+2*x+rnorm(100), 
                   y2=3-4*x+rnorm(100),
                   y3=2+0.001*x+rnorm(100))

# this does the work...
lapply(colnames(df)[-1],function(col){
  form <- formula(paste(col,"x",sep="~"))
  fit  <- lm(form,df)
  if (coef(fit)[2] >0) {
    plot(form,df)
    abline(fit)
  }
})

你的代码并不遥远。此示例获取除第一个(colnames(df)[1])之外的所有列名称,并将它们一次传递给该函数。该函数使用列名称和第一列的名称创建公式变量,调用lm(...),检查x的系数是否为&gt; 0,如果是,则绘制数据和最佳拟合线。

formula(...)lm(...)coef(...)上查找文档。请注意,此示例有一个变量y3,其斜率为正,但与0没有显着差异。您应该考虑如何处理这种情况。