я снова спрашиваю про цикл через столбец в R. У меня есть данные с парами, как показано ниже:
a1.x a2.x a3.x a1.y a2.y a3.y
2 1 2 2 3 2
1 1 3 2 2 3
4 2 2 1 2 4
На самом деле, у меня 45 таких пар, и я хотел бы вычислить t-критерий, вычислить другие вещи и сохранить значения для каждой пары в одной таблице. Поэтому мне интересно, могу ли я написать цикл для этого.
Я пытался сделать, как показано ниже:
name <-colnames(df[1:45])
name <-gsub(".x", "", name)
for (i in name){
value.x <- paste0(i,".x")
value.y <-paste0(i,".y")
t.dmean <- with(df,t.test(value.x, value.y, var.equal = FALSE))
m.case <-mean(value.x)
sd.case <-sd(value.x)
m.ctl <- mean(value.y)
sd.ctl <- sd(value.y)
d <-(m.case-m.ctl)/sqrt((sd.case^2+sd.ctl^2)/2)
out <-rbind(out, cbind(i,paste0(t.dmean$p.value), m.case, sd.case, m.ctl, sd.ctl, d))
}
Я ожидал, что таблица будет такой
scale p_value m.case sd.case m.ctl sd.ctl d
al 0.06 1.1 0.15 1.6 0.5 0.65
a2 0.07 2.1 0.20 2.2 0.10 0.33
a3 0.08 1.3 0.21 1.4 0.2 0.40
Но это не работает ... с ошибкой msg
Error in t.test.default(value.x, value.y, var.equal = FALSE) :
not enough 'x' observations
In addition: Warning messages:
1: In mean.default(x) : argument is not numeric or logical: returning NA
2: In var(x) : NAs introduced by coercion
Кто-нибудь знает, как это сделать?
Большое спасибо!