2015-07-13 2 views
0

В последнее время вы работаете со множеством разных наборов данных и вам нужен быстрый способ определить количество столбцов разных столбцов. Например, у меня есть набор данных, который содержит 75 переменных (или столбцов). Переменные, которые мне нужно использовать, находятся в середине набора данных, я знаю имена этих переменных, т. Е. G, h, I, j и k. Вместо того, писать имена этих переменных каждый раз, когда я хочу использовать их или изменить или ссылки на них я обычно использую номер столбца т.е.Номера столбцов R

for (i in 35:39) { do bla bla bla} 

обычный способ я нахожу номер столбца, когда я смотрю на кадре данных и подсчитайте столбцы, пока я не доберусь до того, кого хочу, тогда я подсчитаю, сколько из них есть, чтобы получить мои 35:39. Есть лучший способ сделать это? Есть ли лучший способ узнать, что столбец/переменная g - это номер столбца 35, а столбец/переменная k - 39?

+0

Я думаю, что существует несколько способов. Вот только хак: 'cbind (1: ncol (iris), names (iris))' он возвращает матрицу со столбцом 1, равную номеру столбца, а второй - столбцу «n-й». – SabDeM

+0

Мне нравится эта идея, больно дать ей попробовать – James

ответ

3

Просто расширенная версия моего комментария. Как я уже сказал, есть несколько способов сделать это, я не думаю, что правильный существует. Вот возможное решение (если я получу то, чего вы хотите достичь, конечно).

as.data.frame(cbind(column = 1:ncol(iris),names = names(iris))) 
    column  names 
1  1 Sepal.Length 
2  2 Sepal.Width 
3  3 Petal.Length 
4  4 Petal.Width 
5  5  Species 

Таким образом, вы знаете, с каким именем следует обращаться к столбцу.

2

Если вы хотите увидеть, какой столбец с именем g вы могли бы сделать

which(names(mydataframe) == 'g') 

, который дает вам индекс столбца с именем «г».

+1

Альтернативно, grep ("g", names (mydataframe)) – lawyeR

0

Вы можете использовать match вместо which, поскольку вам нужно всего лишь одно совпадение столбцов (что, я полагаю, будет и быстрее).

match('g',names(mydataframe)) 
Смежные вопросы