R: t.test 错误
R: t.test error
发生了以下情况:
我设置我的工作space;阅读 .csv;添加了一些子集;以 t.test(HtoC2/C2.dur, s1)
的形式做了一些 t.tests 一切都很好,直到一些 t.tests 之后我突然收到以下错误消息:
Fehler in if (stderr < 10 * .Machine$double.eps * max(abs(mx), abs(my)))
stop("data are essentially constant") :
Fehlender Wert, wo TRUE/FALSE nötig ist
Zusätzlich: Warnmeldungen:
1: In mean.default(y) : argument is not numeric or logical: returning NA
2: In var(y) : NAs durch Umwandlung erzeugt
自从没有其他 t.test(上面提到的那种)可以工作,以前工作得很好的那些 t.tests 也没有。我总是收到相同的错误消息。
我看过类似的问题,但没有找到有效的解决方案,因此我写在这里。当然,我尝试重新执行第一步,以防万一我不小心执行了一些命令,但这也无济于事。此外,我尝试使用具有相同列的类似数据集,t.tests 之前也曾为这些列工作过,但我收到了同样的错误。
背景资料:
我的部分数据:
sprecher ident tier1.label testwort L.zeit H.zeit C1.start C1.ende V1.start V1.ende C2.start C2.ende V2.start V2.ende C1.dur V1.dur C2.dur V2.dur LtoC1 LtoV1 HtoV1 HtoC2
1 s1 1 ma:mi_01 ma:mi 23912.0 24108.2 23827.4 23937.5 23937.5 24064.5 24064.5 24148.0 24148.0 24214.6 110.1 127.0 83.5 66.6 84.6 -25.5 170.7 43.7
2 s1 1 mami_01 mami 26755.0 26958.8 26700.0 26800.2 26800.2 26887.4 26887.4 26957.1 26957.1 27035.5 100.2 87.2 69.7 78.4 55.0 -45.2 158.6 71.4
3 s1 2 ma:mi_02 ma:mi 33237.6 33451.4 33179.6 33282.1 33282.1 33395.8 33395.8 33473.2 33473.2 33562.0 102.5 113.7 77.4 88.8 58.0 -44.5 169.3 55.6
4 s1 3 ma:mi_03 ma:mi 39100.7 39315.5 39057.8 39162.3 39162.3 39290.1 39290.1 39363.1 39363.1 39441.0 104.5 127.8 73.0 77.9 42.9 -61.6 153.2 25.4
5 s1 2 mami_02 mami 41881.7 42099.5 41825.6 41936.8 41936.8 42028.3 42028.3 42101.4 42101.4 42180.1 111.2 91.5 73.1 78.7 56.1 -55.1 162.7 71.2
6 s1 4 ma:mi_04 ma:mi 44801.2 45028.8 44753.5 44860.2 44860.2 44990.9 44990.9 45070.6 45070.6 45131.3 106.7 130.7 79.7 60.7 47.7 -59.0 168.6 37.9
根据 sapply(mode)
和 sapply(length)
所有列都是数字,每个 "sprecher" (s1 - s5) 由 30 行组成,总共 150。
编辑1:
忘了说我是如何定义子集的:
s1 = subset(daten,sprecher=="s1")
s1.mahmi = subset(s1,testwort=="ma:mi")
s1.mammi = subset(s1,testwort=="mami")
s2 = subset(daten,sprecher=="s2")
s2.mahmi = subset(s2,testwort=="ma:mi")
s2.mammi = subset(s2,testwort=="mami")
s3 = subset(daten,sprecher=="s3")
s3.mahmi = subset(s3,testwort=="ma:mi")
s3.mammi = subset(s3,testwort=="mami")
s4 = subset(daten,sprecher=="s4")
s4.mahmi = subset(s4,testwort=="ma:mi")
s4.mammi = subset(s4,testwort=="mami")
s5 = subset(daten,sprecher=="s5")
s5.mahmi = subset(s5,testwort=="ma:mi")
s5.mammi = subset(s5,testwort=="mami")
这应该适用于 sprecher == "s1"
的子集(假设您需要默认的 t.test
选项):
t.test(HtoC2/C2.dur ~ testwort, subset(my_data, sprecher == "s1"))
如果您只想要每个子集的 p 值,您可以这样做:
sapply(levels(factor(my_data$sprecher)), function(lev) {
t.test(HtoC2/C2.dur ~ testwort, my_data[my_data$sprecher == lev, ])$p.value
})
发生了以下情况:
我设置我的工作space;阅读 .csv;添加了一些子集;以 t.test(HtoC2/C2.dur, s1)
的形式做了一些 t.tests 一切都很好,直到一些 t.tests 之后我突然收到以下错误消息:
Fehler in if (stderr < 10 * .Machine$double.eps * max(abs(mx), abs(my)))
stop("data are essentially constant") :
Fehlender Wert, wo TRUE/FALSE nötig ist
Zusätzlich: Warnmeldungen:
1: In mean.default(y) : argument is not numeric or logical: returning NA
2: In var(y) : NAs durch Umwandlung erzeugt
自从没有其他 t.test(上面提到的那种)可以工作,以前工作得很好的那些 t.tests 也没有。我总是收到相同的错误消息。
我看过类似的问题,但没有找到有效的解决方案,因此我写在这里。当然,我尝试重新执行第一步,以防万一我不小心执行了一些命令,但这也无济于事。此外,我尝试使用具有相同列的类似数据集,t.tests 之前也曾为这些列工作过,但我收到了同样的错误。
背景资料:
我的部分数据:
sprecher ident tier1.label testwort L.zeit H.zeit C1.start C1.ende V1.start V1.ende C2.start C2.ende V2.start V2.ende C1.dur V1.dur C2.dur V2.dur LtoC1 LtoV1 HtoV1 HtoC2
1 s1 1 ma:mi_01 ma:mi 23912.0 24108.2 23827.4 23937.5 23937.5 24064.5 24064.5 24148.0 24148.0 24214.6 110.1 127.0 83.5 66.6 84.6 -25.5 170.7 43.7
2 s1 1 mami_01 mami 26755.0 26958.8 26700.0 26800.2 26800.2 26887.4 26887.4 26957.1 26957.1 27035.5 100.2 87.2 69.7 78.4 55.0 -45.2 158.6 71.4
3 s1 2 ma:mi_02 ma:mi 33237.6 33451.4 33179.6 33282.1 33282.1 33395.8 33395.8 33473.2 33473.2 33562.0 102.5 113.7 77.4 88.8 58.0 -44.5 169.3 55.6
4 s1 3 ma:mi_03 ma:mi 39100.7 39315.5 39057.8 39162.3 39162.3 39290.1 39290.1 39363.1 39363.1 39441.0 104.5 127.8 73.0 77.9 42.9 -61.6 153.2 25.4
5 s1 2 mami_02 mami 41881.7 42099.5 41825.6 41936.8 41936.8 42028.3 42028.3 42101.4 42101.4 42180.1 111.2 91.5 73.1 78.7 56.1 -55.1 162.7 71.2
6 s1 4 ma:mi_04 ma:mi 44801.2 45028.8 44753.5 44860.2 44860.2 44990.9 44990.9 45070.6 45070.6 45131.3 106.7 130.7 79.7 60.7 47.7 -59.0 168.6 37.9
根据 sapply(mode)
和 sapply(length)
所有列都是数字,每个 "sprecher" (s1 - s5) 由 30 行组成,总共 150。
编辑1: 忘了说我是如何定义子集的:
s1 = subset(daten,sprecher=="s1")
s1.mahmi = subset(s1,testwort=="ma:mi")
s1.mammi = subset(s1,testwort=="mami")
s2 = subset(daten,sprecher=="s2")
s2.mahmi = subset(s2,testwort=="ma:mi")
s2.mammi = subset(s2,testwort=="mami")
s3 = subset(daten,sprecher=="s3")
s3.mahmi = subset(s3,testwort=="ma:mi")
s3.mammi = subset(s3,testwort=="mami")
s4 = subset(daten,sprecher=="s4")
s4.mahmi = subset(s4,testwort=="ma:mi")
s4.mammi = subset(s4,testwort=="mami")
s5 = subset(daten,sprecher=="s5")
s5.mahmi = subset(s5,testwort=="ma:mi")
s5.mammi = subset(s5,testwort=="mami")
这应该适用于 sprecher == "s1"
的子集(假设您需要默认的 t.test
选项):
t.test(HtoC2/C2.dur ~ testwort, subset(my_data, sprecher == "s1"))
如果您只想要每个子集的 p 值,您可以这样做:
sapply(levels(factor(my_data$sprecher)), function(lev) {
t.test(HtoC2/C2.dur ~ testwort, my_data[my_data$sprecher == lev, ])$p.value
})