Вот краткое объяснение: если вы сделаете это, вы получите значение 2 (индекс)
which(df$a>1)
[1] 2
Теперь, в зависимости от характера используемого подмножества, вы получаете либо строки, либо столбцы.Это возвращает столбец (столбец 2).
df[which(df$a>1)]
b
1 3
2 4
Это возвращает правильное значение (я полагаю, это то, что вы хотите)
df[which(df$a>1),]
a b
2 2 4
ПРИМЕЧАНИЕ ::
df<-read.table(text="a b
1 3
2 4",header=T)