2017-01-31 2 views
0

ich mehr T-Tests in R tue, wie diese:For-Schleife mit String-Variablen

t.test(subset(data, type=="1" & string1=="string123" & string2=="string456")$value, 
       subset(data, type=="3" & string1=="string123" & string2=="string456")$value 

ich diese Tests für mehrere Werte von string2 ausführen möchte:

list <- c("string456", "string457") 
for (i in list){ t.test(paste(subset(data, type=="1" & string1=="string123" & string2=="",i,"")$value, 
        subset(data, type=="3" & string1=="string123" & string2=="",i,"")$value) 

Dies erzeugt einen Fehler :

Error: unexpected numeric constant in "for (i in list){t.test(paste("subset(data, type=="1"

Irgendwelche Vorschläge?

+0

habe das nicht verstanden: 'string2 ==" ", i," "'; ersetze ihn durch 'string2 == i' –

+0

' für (i in c ("a", "bb", "ccc")) drucke (paste0 ("xxx.", i)) 'dh die for-Schleife isn ' t das Problem – jogo

Antwort

1

Sie brauchen nicht paste() in Ihrer Schleife zu verwenden:

list <- c("string456", "string457") 
for (i in list) { 
    t.test(subset(data, type=="1" & string1=="string123" & string2==i)$value,subset(data, type=="3" & string1=="string123" & string2==i)$value) 
} 
0

Sie lapply anstelle ein for -loop verwenden können und Ihre T-Testergebnisse in einer Liste für eine spätere Verwendung speichern.

list <- c("string456", "string457") 
t_test_results <- lapply(list, function(x) 
         t.test(subset(data, type == "1" & string1 == "string123" & string2 == x)$value, 
           subset (data, type == "3" & string1 == "string123" & string2 == x)$value)) 

Auf diese Weise könnte man sogar die $value lassen Sie die gesamten Testdaten in der Liste zu speichern und später mit t_test_results[[1]]$value den Wert nennen.