1

私はRが初めてで、Rの「for」ループの結果を出力する際に​​問題があります.これが私のコードです:

afile <- read.table(file = 'data.txt', head =T)##Has three columns Lab, Store and Batch
lab1 <- afile$Lab[afile$Batch == 1]
lab2 <- afile$Lab[afile$Batch == 2]
lab3 <- afile$Lab[afile$Batch == 3]
lab_list <- list(lab1,lab2,lab3)
for (i in 1:2){
    x=lab_list[[i]]
    y=lab_list[[i+1]]
    t.test(x,y,alternative='two.sided',conf.level=0.95)
 }

このコードはエラーなしで実行されますが、画面には何も出力されません。「割り当て」を使用して変数で結果を取得しようとしましたが、エラーが発生します:

for (i in 1:2){x=lab_list[[i]];y=lab_list[[i+1]];assign(paste(res,i,sep=''),t.test(x,y,alternative='two.sided',conf.level=0.95))}
Warning messages:
1: In assign(paste(res, i, sep = ""), t.test(x, y, alternative = "two.sided",  :
only the first element is used as variable name
2: In assign(paste(res, i, sep = ""), t.test(x, y, alternative = "two.sided",  :
only the first element is used as variable name

ループで t.test を実行して結果を取得する方法、つまり画面に印刷するか、変数に保存する方法を教えてください。

AK

4

3 に答える 3

4

私はあなたのコードを次のように書き直します:

あなたのデータはこのようなものだと思います

afile <- data.frame(Batch= sample(1:3,10,rep=TRUE),lab=rnorm(10))
afile
   Batch        lab
1      2  0.4075675
2      1  0.3006192
3      1 -0.4824655
4      3  1.0656481
5      1  0.1741648
6      2 -1.4911526
7      2  0.2216970
8      1 -0.3862147
9      1 -0.4578520
10     1 -0.6298040

次にlapply、結果をリストに保存できます。

lapply(1:2,function(i){
 x <- subset(afile,Batch==i)
 y <- subset(afile,Batch==i+1)
   t.test(x,y,alternative='two.sided',conf.level=0.95)
})

[[1]]

    Welch Two Sample t-test

data:  x and y 
t = -0.7829, df = 6.257, p-value = 0.4623
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -1.964637  1.005008 
sample estimates:
mean of x mean of y 
0.3765373 0.8563520 


[[2]]

    Welch Two Sample t-test

data:  x and y 
t = -1.0439, df = 1.797, p-value = 0.4165
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -6.588720  4.235776 
sample estimates:
mean of x mean of y 
 0.856352  2.032824 
于 2013-03-12T19:45:06.540 に答える
2

ループでは、多くの場合、結果を明示的に出力する必要があります。試す:

print(t.test(x,y,alternative='two.sided',conf.level=0.95))

また

print(summary(t.test(x,y,alternative='two.sided',conf.level=0.95)))
于 2013-03-12T19:36:46.533 に答える
1

「ハンソンズ」の印刷ソリューションに加えて、結果は次のように保存および印刷できます。

result <- vector("list",6)
for (i in 1:5){x=lab_list[[i]];y=lab_list[[i+1]];result[[i]] = t.test(x,y,alternative='two.sided',conf.level=0.95)}
result

AK

于 2013-03-12T19:57:29.597 に答える