如果我有一个定义为data.table的数据表:
> dt <- data.table (x=c(1,2,3,4), y=c("y","n","y","m"), z=c("pickle",3,8,"egg"))
> dt
x y z
1: 1 y pickle
2: 2 n 3
3: 3 y 8
4: 4 m egg
还有一个变量
fn <- "z"
我知道可以通过以下方式从data.table中提取列:
> dt[,fn, with=FALSE]
我不知道如何用data.table实现以下操作:
> factorFunction <- function(df, fn) {
df[,fn] <- as.factor(df[,fn])
return(df)
}
如果我设置fn="x"并调用factorFunction(data.frame(dt),fn),它可以正常工作。
所以我尝试使用data.table,但这不起作用。
> factorFunction <- function(dt, fn) {
dt[,fn, with=FALSE] <- as.factor(dt[,fn, with=FALSE])
return(dt)
}
在 sort.list(y) 中出现错误:'x' 必须是原子的才能进行 'sort.list' 的排序。 您是否对列表调用了 'sort' 函数?
dt[,fn] <- as.factor(dt[,fn, with=FALSE][[1]])
我认为它非常接近你所写的内容。 - Frank