How to get row index number in R?

前端 未结 6 1215
无人共我
无人共我 2021-01-31 13:46

Suppose I have a list or data frame in R, and I would like to get the row index, how do I do that? That is, I would like to know how many rows a certain matrix consists of.

相关标签:
6条回答
  • 2021-01-31 13:57
    rownames(dataframe)
    

    This will give you the index of dataframe

    0 讨论(0)
  • 2021-01-31 14:03

    It not quite clear what exactly you are trying to do.

    To reference a row in a data frame use df[row,]

    To get the first position in a vector of something use match(item,vector), where the vector could be one of the columns of your data frame, eg df$cname if the column name is cname.

    Edit:

    To combine these you would write:

    df[match(item,df$cname),]

    Note that the match gives you the first item in the list, so if you are not looking for a unique reference number, you may want to consider something else.

    0 讨论(0)
  • 2021-01-31 14:05

    See row in ?base::row. This gives the row indices for any matrix-like object.

    0 讨论(0)
  • 2021-01-31 14:05

    Perhaps this complementary example of "match" would be helpful.

    Having two datasets:

    first_dataset <- data.frame(name = c("John", "Luke", "Simon", "Gregory", "Mary"),
                                role = c("Audit", "HR", "Accountant", "Mechanic", "Engineer"))
    
    second_dataset <- data.frame(name = c("Mary", "Gregory", "Luke", "Simon"))
    

    If the name column contains only unique across collection values (across whole collection) then you can access row in other dataset by value of index returned by match

    name_mapping <- match(second_dataset$name, first_dataset$name)
    

    match returns proper row indexes of names in first_dataset from given names from second: 5 4 2 1 example here - accesing roles from first dataset by row index (by given name value)

    for(i in 1:length(name_mapping)) {
        role <- as.character(first_dataset$role[name_mapping[i]])   
        second_dataset$role[i] = role
    }
    

    ===

    second dataset with new column:
         name       role
    1    Mary   Engineer
    2 Gregory   Mechanic
    3    Luke Supervisor
    4   Simon Accountant
    

    r

    0 讨论(0)
  • 2021-01-31 14:15

    I'm interpreting your question to be about getting row numbers.

    • You can try as.numeric(rownames(df)) if you haven't set the rownames. Otherwise use a sequence of 1:nrow(df).
    • The which() function converts a TRUE/FALSE row index into row numbers.
    0 讨论(0)
  • 2021-01-31 14:22

    If i understand your question, you just want to be able to access items in a data frame (or list) by row:

    x = matrix( ceiling(9*runif(20)), nrow=5  )   
    colnames(x) = c("col1", "col2", "col3", "col4")
    df = data.frame(x)      # create a small data frame
    
    df[1,]                  # get the first row
    df[3,]                  # get the third row
    df[nrow(df),]           # get the last row
    
    lf = as.list(df)        
    
    lf[[1]]                 # get first row
    lf[[3]]                 # get third row
    

    etc.

    0 讨论(0)
提交回复
热议问题