我有一个名为dataTreamill的数据集,其中包含5列文本信息,第6行(直到56行)包含我要分析的变量。 对于每个变量,我都希望执行线性回归,以查看我的数据在不同条件下如何变化。
我发现我可以通过以下方式绘制lm图:
lmTreadmill = lm(StrideRegularity_AP~ConditionNr, data = dataTreadmill)
可视化这给出了一个不错的图:
ggPredict(lmTreadmill,se=TRUE,interactive=TRUE)
但是除了StrideRegularity_AP我还有54个其他变量,我想使用lapply
col <- c(6:56) # these are the only columns containing data;
allFits = lapply(dataTreadmill[,col], function(x) (lm(x~dataTreadmill$ConditionNr+dataTreadmill$Group, data=dataTreadmill)))
现在,我对每个变量都有一个不错的列表,其中包含有关回归的信息。 但是,当我想使用以下代码绘制这些线性回归中的任何一个时:
ggPredict(allFits$StrideRegularity_AP)
尽管将allFits $ StrideRegularity_AP与lmTreadmill(相同)进行比较时,我看不到结构或值的任何差异,但是R给出了以下错误:
Error in `[[<-.data.frame`(`*tmp*`, yname, value = c(`1` = 0.616668527648763, :
replacement has 419 rows, data has 30
In addition: Warning message:
'newdata' had 30 rows but variables found have 419 rows
为什么在使用lapply之后我无法看到线性回归?
提前谢谢! 虹膜
答案 0 :(得分:0)
从lm调用中删除dataTreadmill $,然后重试。
allFits = lapply(dataTreadmill[,col], function(x) (lm(x~ConditionNr+Group, data=dataTreadmill)))
无论如何,您都不需要指定数据(在进行快速测试时,无论是否出现与您相同的错误-都不知道为什么)
答案 1 :(得分:0)
这两种解决方案均有效!谢谢。 尽管我仍然想知道为什么,因为数据看起来与我写的建议完全相似。但是,至少没有我可以绘制数据:)