Во-первых, обратите внимание, что matrix
и data.frame
- это разные вещи в R. Я предполагаю, что у вас есть data.frame
(поскольку это то, что возвращается read.csv()
).У data.frame
есть именованные столбцы (если вы не дадите им столбцы, для вас будут созданы общие).
Вы можете установить подмножество data.frame
, указав, какие строки вы хотите и / или какиестолбцы, которые вы хотите.Самый простой способ указать, какие строки имеют логический вектор, часто построенный из сравнений с использованием определенных столбцов data.frame
.Например, data[["column values"]] == "15"
создаст логический вектор, который будет TRUE
, если соответствующая запись в столбце column values
является строкой «15» (поскольку она в кавычках, это строка, а не число).Вы можете сделать критерии выбора настолько сложными, насколько захотите (комбинируя логические векторы с &
и |
), чтобы указать нужные вам строки.Этот вектор становится первым аргументом в индексации.
Список имен столбцов или номеров может быть вторым аргументом.Если какой-либо из аргументов отсутствует, предполагаются все строки (или столбцы).
Собрав все это вместе, вы получите примеры, такие как
data[data[["column values"]] == "15", ]
или с использованием фактического набора данных (mtcars
)
mtcars[mtcars$am == 1, ]
mtcars[mtcars$am == 1 & mtcars$hp > 100, "mpg"]
mtcars[mtcars$am == 1 & mtcars$hp > 100, "mpg", drop=FALSE]
mtcars[mtcars$hp > 100, c("mpg", "carb")]
Посмотрите, что возвращают каждое из условий (первые аргументы, например, mtcars$am == 1 & mtcars$hp > 100
), чтобы лучше понять, как работает индексация.