2016-12-30 11 views
1

Ich habe einen Datenrahmen.Auswahl von Werten aus einer Spalte basierend auf dem Wert aus einer anderen Spalte dynamisch

df <- data.frame(A = 1:10, B = 101:110, C = 201:210) 

Und ich will Werte in Spalte A finden die folgenden Kriterien verwenden,

df$A[df$B > 101 & df$B < 105] 
[1] 2 3 4 

Allerdings möchte ich programmatisch die Kriterien der Lage sein, den folgenden Ansatz verwenden,

var <- noquote(paste0("df$", names(df[2]))) 
df$A[var > 101 & var < 105] 

Aber alles, was ich bekomme, ist integer(0).

Offensichtlich stimmt etwas nicht. Könnte jemand helfen? Vielen Dank.

+0

verwenden Warum wollen Sie durch diesen Ansatz gehen? – akrun

+0

akrun, ich möchte bestimmte Spalten in diesem Datenrahmen durchlaufen und Werte aus Spalte A extrahieren, die die Kriterien erfüllen. – useryk

+1

Eine Option ist 'get', wenn Sie' var <- name (df) [2]; Bibliothek (data.table); setDT (df) [get (var)> 101 & get (var) <105] $ A # [1] 2 3 4' – akrun

Antwort

1

Wenn wir es brauchen, dann eval(parse

df$A[eval(parse(text=var))> 101 & eval(parse(text=var)) < 105] 
#[1] 2 3 4 
Verwandte Themen