为啥 summary(object) 有效但 plot(object) 无效?
Posted
技术标签:
【中文标题】为啥 summary(object) 有效但 plot(object) 无效?【英文标题】:Why does summary(object) work but plot(object) not?为什么 summary(object) 有效但 plot(object) 无效? 【发布时间】:2017-07-04 12:28:37 【问题描述】:我通过 read.table() 创建了一个数据集“before_database”。之后这个数据框被 do.call() 分组并存储到一个对象“fits”中:
fits<-do.call('rbind', by(before_database, before_database$Serial_number, function(before_database) broom::tidy(lm(Amplification ~ Voltage-1, data = before_database))))
现在我想看到一些结果。摘要(适合)作品:
> summary(fits)
term estimate std.error statistic p.value
Length:54 Min. :0.3601 Min. :0.06611 Min. :2.884 Min. :3.000e-09
Class :character 1st Qu.:0.4943 1st Qu.:0.11113 1st Qu.:3.384 1st Qu.:4.344e-05
Mode :character Median :0.5866 Median :0.14816 Median :3.934 Median :2.015e-04
Mean :0.6030 Mean :0.16049 Mean :4.026 Mean :8.918e-04
3rd Qu.:0.7058 3rd Qu.:0.21271 3rd Qu.:4.318 3rd Qu.:1.199e-03
Max. :0.9193 Max. :0.27495 Max. :6.410 Max. :5.291e-03
>
但情节(适合)不。我收到:
> plot(fits)
Error in plot.window(...) : need finite 'xlim' values
In addition: Warning messages:
1: In data.matrix(x) : NAs introduced by coercion
2: In min(x) : no non-missing arguments to min; returning Inf
3: In max(x) : no non-missing arguments to max; returning -Inf
coef(fits) 似乎也不起作用,我只是得到“NULL”。什么事?我应该追求什么?
编辑:添加了摘要信息,我还有一个问题,可能与问题有关。我想分别拟合所有分组数据(我现在正在这样做吗?)所以通过尝试绘制它并没有指定应该精确绘制什么(哪个子集)?
我想我的问题可以归结为我不知道如何将常规 r 命令应用于通过 do.call() 生成的分组数据/子集的情况?最后,我需要一个不合适的特定值。我知道fitted() 可以做到这一点,但现在如何为每个组做?例如。我需要150倍放大对应的电压和此时的斜率。
数据(仅显示一部分):
由 do.call() 分组和拟合(仅显示一部分):
【问题讨论】:
我们可以看到汇总的结果吗? @CClaire 当然,对不起! 【参考方案1】:第二个问题(来自编辑)没有关联,所以我将专注于第一个问题。您收到错误消息,因为您正在尝试绘制一个不起作用的 character()
类。一般来说,无论如何尝试调用plot
整个数据框都不是最好的主意-您可能希望将一些特定的列相互绘制,对吗? plot
虽然有点聪明,但它通常会尝试绘制 something。这是一个可重现的示例:
plot(data.frame(letters[1:10], 1:10, stringsAsFactors = F)) # error
plot(data.frame(1:10, sample(1:10,10), stringsAsFactors = F)) # sees two columns, makes a scatterplot
plot(data.frame(1:10, sample(1:10,10), sample(1:10,10), stringsAsFactors = F)) # sees 2+ columns, makes a scatterplot matrix
plot(data.frame(letters[1:5], 1:10, stringsAsFactors = T)) # if using factors (not character), plot wrangles data into a boxplot (recycling values!)
boxplot(data.frame(runif(10), runif(10)*2, runif(10)^2 )) # what I suspect you were after
简而言之,最好先弄清楚你想要绘制什么,然后再绘制它。
编辑以回复评论/编辑。要设置子集,您可以只限制绘图边界
plot(sample(1:100, 100), ylim=c(0,50), xlim=c(2,10))
或使用逻辑运算符做一个子集,例如,
x = 1:10
x2 = x[which(x>5 & x < 10)]
plot(x2)
【讨论】:
谢谢!不完全是我现在需要的,而是以后无论如何:) 我的目标是绘制我通过 do.call() 创建的任意拟合分组/子集。或者主要是:如何将常规 r 命令应用于通过 do.call() 生成的子集? @Ben 弄清楚你所说的“情节”是什么意思(箱线图、散点图、条形图、文字云...),并相应地改写问题。此外,do.call 不会生成任何特殊对象(请查看class()
)。
首先再次感谢!对于数据 mtcars,当我执行 lmfit
@Ben 如果我的回答回答了您最初的问题,您可能希望将其标记为已接受,然后通过提出单独的问题来充实您的其他问题。
@Ben 执行以下 R 命令:?"=="
并使用合适的运算符。以上是关于为啥 summary(object) 有效但 plot(object) 无效?的主要内容,如果未能解决你的问题,请参考以下文章
困惑为啥在Objective C中一段代码有效而另一段代码无效
为啥我在使用 PL/SQL 的 Oauth 2 访问令牌代码中出现此错误?
“Object [object Object] has no method”错误在线但不在本地主机上!为啥?
为啥方法 getNodeSuccess 有效,但 getNodeFail 无效?