Не рекомендуется иметь одинаковые имена столбцов по практическим соображениям.Но мы можем сделать сравнение (==
), чтобы получить логический вектор, и использовать его для извлечения столбцов
i1 <- colnames(test) == "test"
new_df <- test[, i1, drop = FALSE]
Обратите внимание, что data.frame
не допускает дублирование имен столбцов и будетизмените его на уникальный, добавив .1
.2
и т. д. в конце с make.unique
.С matrix
(набор данных OP), позволяет иметь повторяющиеся имена столбцов или имена строк (хотя не рекомендуется)
Кроме того, если есть несколько имен столбцов, которые повторяются и хотите выбрать их какОтдельные наборы данных, используйте split
lst1 <- lapply(split(seq_len(ncol(test)), colnames(test)), function(i)
test[, i, drop = FALSE])
Или прокрутите имена столбцов unique
и выполните ==
, циклически просматривая его с помощью lapply
lst2 <- lapply(unique(colnames(test)), function(nm)
test[, colnames(test) == nm, drop = FALSE])