2016-12-30 12 views
1

У меня есть фрейм данных.Выбор значений из столбца на основе значения из другого столбца, определяемого динамически

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

И я хочу, чтобы найти значения в столбце A, используя следующие критерии,

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

Однако, я хочу, чтобы иметь возможность задавать критерии программно, используя следующий подход,

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

Но все, что я получаю, это integer(0).

Очевидно, что-то не так. Может ли кто-нибудь помочь? Спасибо.

+0

Почему вы хотите, чтобы пройти через этот подход? – akrun

+0

akrun, я намерен перебирать конкретные столбцы в этом фрейме данных и извлекать значения из столбца A, соответствующие критериям. – useryk

+1

Один из вариантов - 'get', если вы ссылаетесь на' var <- names (df) [2]; библиотека (data.table); setDT (df) [get (var)> 101 & get (var) <105] $ A # [1] 2 3 4' – akrun

ответ

1

Если нужно, то используйте eval(parse

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