The above answer is probably more user friendly but here are a couple more...
Edit for down vote about index:
Mydata[Mydata$x >= 3 & Mydata$x <= 7, ]
x y
3 3 45
4 4 54
5 5 65
6 6 78
7 7 97
Which can be extended to return other columns, e.g., if you just wanted y:
Mydata[Mydata$x >= 3 & Mydata$x <= 7, 'y']
[1] 45 54 65 78 97
It can also return more than one column,e.g.:
Mydata <- data.frame(x = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
y = c(20, 30, 45, 54, 65, 78, 97, 102, 123, 156),
z = c(5, 4, 3, 2, 1, 0, -1, -2, -3, -4))
Mydata[Mydata$x >= 3 & Mydata$x <= 7, c('y','z')]
y z
3 45 3
4 54 2
5 65 1
6 78 0
7 97 -1