相关疑难解决方法(0)

当变量名存储在字符向量中时,选择/分配给data.table

data.table如果变量名存储在字符向量中,如何引用变量?例如,这适用于data.frame:

df <- data.frame(col1 = 1:3)
colname <- "col1"
df[colname] <- 4:6
df
#   col1
# 1    4
# 2    5
# 3    6
Run Code Online (Sandbox Code Playgroud)

如何使用或不使用:=表示法对data.table执行相同的操作?显而易见的事情是dt[ , list(colname)]行不通的(我也没想到).

r data.table

78
推荐指数
3
解决办法
2万
查看次数

通过函数做绝对降序的data.table?

我想通过将sort.field传递给函数来进行绝对降序排序(即排序忽略符号,例如5,data.table-2,1).

我看过降序排序,但在我的努力中我得到错误或者我正在改变变量的符号,而不是正确排序.

这有效:

library(data.table)
DT <- data.table(id = c("a","b","z"), 
                 score = c(1, 5, -2))
DT1 <- copy(DT)

#doing sort direct works
DT1 <- DT1[order(-abs(score))] 
# i.e. b, Z, a
Run Code Online (Sandbox Code Playgroud)

但是当传递参数时,我找不到正确的语法(数学错误,必须提供j,等等)

#in function
sort.field = "score"

sortme <- function(dt, sort.field){

  dt <- dt[order(-abs(sort.field))]  
}

DT2 <- sortme(DT, sort.field)
#  ERROR get non-numeric argument to maths function as it sees string
Run Code Online (Sandbox Code Playgroud)

我尝试了各种各样的evals,as.name,= F等.

   dt <- dt[, order(-abs(as.name(sort.field))]  

   # even
    expr <- substitute(x := -abs(x),  list(x=as.name(sort.field)))
    dt<- …
Run Code Online (Sandbox Code Playgroud)

sorting r data.table

5
推荐指数
1
解决办法
872
查看次数

标签 统计

data.table ×2

r ×2

sorting ×1