为什么摘要(对象)工作但绘图(对象)不工作?

时间:2017-07-04 12:28:38

标签: r

我创建了一个数据集" before_database"通过read.table()。之后,这个数据框由do.call()分组并存储到一个对象中"适合":

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(适合)似乎不起作用,我只是得到&#34; NULL&#34;。有什么事?我该怎么办?

编辑:添加了摘要信息,我还有一个问题,可能与问题有关。我想分别适合所有分组数据(我现在正在做这个吗?)所以通过尝试绘制它没有指定应该准确绘制什么(哪个子集)?

我想我的问题可以减少到我不知道如何将常规r命令应用于通过do.call()生成的分组数据/子集?最后,我需要一个特定的值。我知道fit()可以做到这一点,但现在如何为每个组做?例如。我需要相应的放大电压150和此时的斜率。

数据(仅显示部分): Data

Grouped&amp;由do.call()拟合(仅显示部分):

Grouped & fitted

1 个答案:

答案 0 :(得分:2)

第二个问题(来自编辑)未连接,因此我将重点关注最初的问题。您收到错误,因为您正在尝试绘制character()类,但这不起作用。一般来说,尝试在整个数据框中调用plot并不是最好的想法 - 你可能想要将一些特定的列相互映射,对吧? plot虽然很聪明,但它通常会尝试绘制某些内容。这是一个可再版的例子:

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)