【问题标题】:Understanding xyplot in R了解 R 中的 xyplot
【发布时间】:2011-09-26 19:46:40
【问题描述】:

我是 R 新手,我正在尝试理解 lattice 中的 xyplot 函数。

我有一个数据框:

df <- data.frame(Mean=as.vector(abc), Cycle=seq_len(nrow(abc)), Sample=rep(colnames(abc), each=nrow(abc)))

我可以用它来绘制它

xyplot(Mean ~ Cycle, group=Sample, df, type="b", pch=20, auto.key=list(lines=TRUE, points=FALSE, columns=2), file="abc-quality")

我的问题是,什么是均值和循环?查看 ?xyplot 我可以看到这是某种函数,并且我知道它们来自数据框 df,但我无法通过 ls()&gt;Mean 看到它们给 Error: object 'Mean' not found。我试图通过分别用 df[1] 和 df[2] 代替 Mean 和 Cycle 来复制该图,认为它们是相等的,但似乎并非如此。有人能解释一下这些是什么数据类型(对象、变量等)以及是否有通用的方法来访问它们(如 df[1] 和 df[2])?

谢谢!

编辑:xyplot 工作正常,我只是想了解 Mean 和 Cycle 与 df(列标签?)的关系,以及是否有办法将它们放入 xyplot 函数而不引用它们按名称,例如 df[1] 而不是 Mean。

【问题讨论】:

    标签: r plot dataframe


    【解决方案1】:

    这些只是对df 列的引用。

    如果您想通过名称访问它们而不每次都提及df,您可以写with(df,{ ...your code goes here... })。 ...your code goes here... 块可以像 MeanCycle 一样简单地访问列。

    访问这些列的更直接方法是df$Meandf$Cycle。您也可以按位置将它们引用为df[,1]df[,2],但我很难理解您为什么要这样做。

    xyplot 调用起作用的原因是它隐式执行 with(df) 的等效项,其中 dfxyplot 的第三个参数。许多 R 函数都是这样的,例如 lm(y~x,obs) 也会正确地从数据框 obs 中提取列 xy

    【讨论】:

    • 最有经验的用户不鼓励attach()
    • 我还提到了with(),但你忘记了显而易见的:data= 参数到xyplot()。这不是最简单的解决方案吗?
    • @DirkEddelbuettel:我认为你误读了这个问题。 OP 的代码确实有效并且已经通过了data=dfxyplot 的第三个参数)。
    • 谢谢 aix,有没有办法根据它们来自的数据框访问列 x y(来自您的示例),例如 obs[1] 用于 x 和 obs[2] 用于 y?
    • 哦,好吧,所以平均值和循环只是列的标签,我只是错误地访问它们 df[1] 而不是 df[,1]。感谢您的帮助。
    【解决方案2】:

    您需要将, data=df 添加到您对xyplot() 的呼叫中:

    xyplot(Mean ~ Cycle, data=df,                  # added data= argument
           group=Sample, type="b", pch=20, 
           auto.key=list(lines=TRUE, points=FALSE, columns=2), 
           file="abc-quality")
    

    或者,您可以with(df, ....) 并将您现有的电话放在我留下四个点的位置。

    【讨论】:

    • 谢谢,xyplot 似乎工作正常,我只是对 Mean 和 Cycle 是什么以及为什么我必须在 xyplot 函数中按名称调用它们感到困惑。
    • 您在第一个命令中创建了 Mean 和 Cycle,这些是 data.frame 的列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多