我正在尝试编写一个循环,该循环将为每行提供一个r ^ 2值。我遇到的问题是如何格式化[]或()以获取行向量。我知道按名称调用它们会更容易,但是此脚本将处理不同的项目,这些项目的列数都不相同-因此,对名称进行硬编码不是一个选择。第一列将始终是波长,其余列将始终是我要使用的数据点。需要明确的是,我希望将除波长以外的每一列都包括在r ^ 2计算中。
数据框(statsDF)如下:
Wavelength Line_1 Line_2 Line_3 Line_4 Line_5 Line_6 Line_7
1 0400 0.4054731 0.3193632 0.2667026 0.8494675 0.2394639 0.2936054 0.2453124
2 0402 0.4048527 0.3195507 0.2693250 0.8664931 0.2380499 0.2931895 0.2437657
3 0404 0.4041760 0.3226145 0.2731347 0.8756971 0.2338797 0.2876017 0.2432391
4 0406 0.4079322 0.3264623 0.2750645 0.8770746 0.2273580 0.2866682 0.2476563
5 0408 0.4158769 0.3271127 0.2790707 0.8770176 0.2268334 0.2947697 0.2567014
我的代码如下:
rsq <- for (i in 1:nrow(statsDF)) {
points <- as.numeric(statsDF([ , 2: ])) #The issue is here
r2 <- summary(lm(Wavelength ~ points, data = statsDF))$r.squared
print(r2)
}
无论我使用()和[]的哪种组合,都会给我一个有关意外符号的错误提示。我敢肯定这只是我所忽略的东西,但是我对R还是很陌生。我当然也愿意接受sapply / etc。整个循环的替代方案。有任何想法吗?谢谢!
6/31修改:
我正在尝试以下脚本:
myR <- for (n in 1:nrow(statsDF)) {
i <- cbind(2:ncol(statsDF))
r2 <- summary(lm(statsDF[n,1] ~ as.matrix(statsDF[n , i]), options(na.action="na.omit")))$r.squared
print(r2)
}
...然后产生此错误:
Error in model.matrix.default(mt, mf, contrasts) :
variable 1 has no levels
我希望这个错误不会引起我的注意。我试过同时制作i和n as.numeric
,as.matrix
,并将它们分解为自己的变量。我还尝试将dataPoint改写为数字,并且我再次检查了dataPoint和Wavelength是否为因数-这什么都没做。
如建议的那样,我也正在尝试使用转置后的数据框版本:
dataPoint 0400 0402 0404 0406 408
1 Line_1 0.4054731 0.4048527 0.404176 0.4079322 0.4158769
2 Line_2 0.3193632 0.3195507 0.3226145 0.3264623 0.3271127
3 Line_3 0.2667026 0.269325 0.2731347 0.2750645 0.2790707
4 Line_4 0.8494675 0.8664931 0.8756971 0.8770746 0.8770176
5 Line_5 0.2394639 0.2380499 0.2338797 0.227358 0.2268334
使用以下代码:
myR2 <- for (n in 2:ncol(LongDF)) {
r4 <- summary(lm(as.matrix(LongDF[1, ]) ~ as.matrix(LongDF[n, ]),
options(na.action="na.exclude")))$r.squared
print(r4)
}
然后出现以下错误:
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
我还按照建议提出了一个交叉验证问题:(https://stats.stackexchange.com/questions/474267/how-to-determine-statistical-significance-of-one-independent-variable-by-two-dep)-我认为我在这里对研究问题的措辞更好。
7/2更新::我已经放弃尝试对此数据集进行统计,而是依靠绘制数据并假设人们可以直观地了解哪些波长是重要的。感谢所有尝试提供帮助的人!