How to reference column names that start with a number, in data.table

前端 未结 2 2066
余生分开走
余生分开走 2020-12-17 23:30

If the column names in data.table are in the form of number + character, for example: 4PCS, 5Y etc, how could this be ref

相关标签:
2条回答
  • 2020-12-17 23:36

    I think, this is what you're looking for, not sure. data.table is different from data.frame. Please have a look at the quick introduction, and then the FAQ (and also the reference manual if necessary).

    require(data.table)
    dt <- data.table("4PCS" = 1:3, y=3:1)
    #    4PCS y
    # 1:    1 3
    # 2:    2 2
    # 3:    3 1
    
    # access column 4PCS
    dt[, "4PCS"]
    
    # returns a data.table
    #    4PCS
    # 1:    1
    # 2:    2
    # 3:    3
    
    # to access multiple columns by name
    dt[, c("4PCS", "y")]
    

    Alternatively, if you need to access the column and not result in a data.table, rather a vector, then you can access using the $ notation:

    dt$`4PCS` # notice the ` because the variable begins with a number
    # [1] 1 2 3
    
    # alternatively, as mnel mentioned under comments:
    dt[, `4PCS`] 
    # [1] 1 2 3
    

    Or if you know the column number you can access using [[.]] as follows:

    dt[[1]] # 4PCS is the first column here
    # [1] 1 2 3
    

    Edit:

    Thanks @joran. I think you're looking for this:

    dt[, `4PCS` + y]
    # [1] 4 4 4
    

    Fundamentally the issue is that 4CPS is not a valid variable name in R (try 4CPS <- 1, you'll get the same "Unexpected symbol" error). So to refer to it, we have to use backticks (compare`4CPS` <- 1)

    0 讨论(0)
  • 2020-12-18 00:02

    You can also put an 'X' immediately before the variable name you are calling to get R to recognise it as a name rather than evaluating the number and the string as different (and hence bad syntax)

    So e.g. when calling 4PCS use X4PCS

    as in

    mydata <- X4PCS

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