R uses [ for subsetting (returns same type), [[ for extracting single elements, and $ for named columns/list elements. Negative indices exclude elements. Logical vectors can be used directly as masks.
v <- c(10, 20, 30, 40, 50)
# By position
v[2] # 20
v[c(1, 3)] # 10 30
v[-1] # exclude first: 20 30 40 50
v[2:4] # 20 30 40
# By condition
v[v > 25] # 30 40 50
# Matrix indexing [row, col]
m <- matrix(1:9, nrow = 3)
m[2, 3] # row 2, col 3
m[1, ] # entire row 1
m[, 2] # entire col 2
# Data frame
df[1, ] # first row
df[, "species"] # column by name
df[df$weight_g > 5, ] # conditional row filter