我创建了一个数据集" 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和此时的斜率。
Grouped&amp;由do.call()拟合(仅显示部分):
答案 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)