2016-04-06 24 views
0

Ich bin neu hier und Anfänger bei R.Wählen Sie Spalten dynamisch

Ich habe derzeit mit dem folgenden Problem zu kämpfen. Ich habe einen Datenrahmen im Breitformat mit ~ 200 Versuchen (spaltenweise) für jeden Teilnehmer (zeilenweise). Ich brauche jetzt eine Variable für jeden Versuch zu berechnen, der angibt, ob der Teilnehmer ein Ziel oder eine Steuer sah

ich den Code für eine solche Studie schrieb:

data_final$target.41 <- ifelse(data_final$word_position.41 == 1 & data_final$line_position.41 == "left" | data_final$word_position.41 == 2 & data_final$line_position.41 == "right" , 1, 0) 

Dies funktioniert, mir eine Spalte geben mit 1 und 0, je nachdem, was die Teilnehmer in diesem Versuch gesehen haben. (die 41 zeigt den 41. Versuch an)

Jetzt möchte ich eine Steigung benutzen, um das für alle Versuche dynamisch zu tun.

aber mein armer Versuch gar nicht arbeiten:

target.i <- NULL 

temp <- NULL 

for (i in 41:281) { 
    temp <- ifelse(data_final$word_position.i == 1 & data_final$line_position.i == "left" | data_final$word_position.i == 2 & data_final$line_position.i == "right" , 1, 0) 
    target.i <- rbind(target.i,temp) 
} 
data_final <- cbind(data_final,target.i) 

Antwort

0

Das Problem hierbei ist, dass Variablennamen wie word_position.i wird nicht Schleife mit i. Sie können so etwas tun:

target <- data.frame(matrix(nrow = dim(data_final)[1], ncol = 0)) 
for (i in 41:281) { 
    word_position.i <- paste("word_position.", i, sep = "") 
    line_position.i <- paste("line_position.", i, sep = "") 
    target.i <- paste("target.", i, sep = "") 
    temp <- ifelse(data_final[,word_position.i] == 1 & data_final[,line_position.i] == "left" | data_final[,word_position.i] == 2 & data_final[,line_position.i] == "right" , 1, 0) 
    target[,target.i] <- temp 
} 
data_final <- cbind(data_final,target) 
+0

Vielen Dank! Nach dem Finden und Reparieren des Tippfehlers in der ersten Reihe (ncol statt ncos) funktionierte das perfekt! Danke noch einmal – Mathias

Verwandte Themen