Вот небольшое путешествие в оба конца через возможности доступа, которые предоставляет R. Допустим, у нас есть эти данные:
set.seed(111)
df<-data.frame(
day1 = paste0(sample(LETTERS[1:5], 2), rep(letters[1:2], 5)),
day2 = runif(10),
day3 = c(sample(9), NA),
day4 = round(rnorm(10), 2)
)
df
day1 day2 day3 day4
1 Ca 0.51492383 4 0.39
2 Db 0.37766322 7 0.80
3 Ca 0.41833733 6 -1.57
4 Db 0.01065785 2 -0.09
5 Ca 0.53229524 1 -0.36
6 Db 0.43216062 9 -1.19
7 Ca 0.09368152 3 0.36
8 Db 0.55577991 8 0.36
9 Ca 0.59022849 5 0.35
10 Db 0.06714114 NA 0.19
Вот несколько способов получить доступ к данным на фрейме данных:
# Access specific fields by indices:
df[5, 2]
[1] 0.5322952
# Access specific row:
df[2,]
day1 day2 day3 day4
2 Db 0.3776632 7 0.8
# Access specific column:
df[,3]
[1] 4 7 6 2 1 9 3 8 5 NA
# Access more than one specific row/column:
df[c(1, 3) ,]
day1 day2 day3 day4
1 Ca 0.5149238 4 0.39
3 Ca 0.4183373 6 -1.57
df[ ,c(1, 3:4)]
day1 day3 day4
1 Ca 4 0.39
2 Db 7 0.80
3 Ca 6 -1.57
4 Db 2 -0.09
5 Ca 1 -0.36
6 Db 9 -1.19
7 Ca 3 0.36
8 Db 8 0.36
9 Ca 5 0.35
10 Db NA 0.19
# Access by subsetting on rows with specific values:
df[df$day1=="Ca" ,]
day1 day2 day3 day4
1 Ca 0.51492383 4 0.39
3 Ca 0.41833733 6 -1.57
5 Ca 0.53229524 1 -0.36
7 Ca 0.09368152 3 0.36
9 Ca 0.59022849 5 0.35
# Access with regular expression:
df[grep("a", df$day1),]
day1 day2 day3 day4
1 Ca 0.51492383 4 0.39
3 Ca 0.41833733 6 -1.57
5 Ca 0.53229524 1 -0.36
7 Ca 0.09368152 3 0.36
9 Ca 0.59022849 5 0.35
# Access via NA:
df[is.na(df$day3), ]
day1 day2 day3 day4
10 Db 0.06714114 NA 0.19
# Access with mixture of index and column name:
df[3, "day2"]
[1] 0.4183373
# Access with mixture of index and several column names at once
df[2, paste0("day", 1:3)]
day1 day2 day3
2 Db 0.3776632 7
И я уверен, что есть и другие способы!