2016-03-03 7 views
0

мне нужно получить индекс столбца из data.table или tbl_df по его имени,R dyplr: Получить индекс столбца по его имени

есть более простой способ, чем:

getColIndex <- function(df, colnameTarget = "myColumnName") { 
    colnames <- names(traindata_subset) 
    colIndex <- 1 
    found <- FALSE 
    for(colname in colnames) { 
     if (colname == colnameTarget) { 
      found <- TRUE 
      break 
     } 
     colIndex <- colIndex + 1 
    } 

    if (found) { 
     return (colIndex) 
    } 
    else { 
     return (-1) 
    } 
} 

Особенно используя Hadley's dplyr?

+0

AAAHH вы бьете меня это @David !! – MaxPD

+1

Более забавный способ может рассмотреть возможность использования [** 'gather' **] (https://rpubs.com/bradleyboehmke/data_wrangling), который отлично сочетается с' dplyr'. Затем вы получите имена столбцов в столбце, и вы можете получить индексы или все, что захотите. – Konrad

+0

@Konrad Вы можете сделать это с помощью 'base' R, просто выполнив' data.frame (names (df)) ' – MaxPD

ответ

5

Попробуйте с base R: и первый ответил Давид выше:

index <- match(colname, names(df)) 
+1

Мне жаль, я этого не видел :( – MaxPD

+2

Интересно, сколько времени тратится каждый день, переопределяя уже реализованные функции 'R' ... :) – Boern

2

which(names(df) == "myColumnName") - это то, что вы ищете, если я правильно понимаю вашу цель?

Смежные вопросы