我是以下的粉丝data.table
,为满足当前和未来的所有需求编写可重用的函数。
这是我在解决这个问题时遇到的挑战:使用 ggplot2 自动绘制所有 data.table 列的最佳方法
我们将 data.table 传递给函数进行绘图,然后原始 data.table 被修改,尽管我们制作了它的副本以防止这种情况发生。
下面用一个简单的代码来说明:
plotYofX <- function(.dt,x,y) {
dt <- .dt
dt[, (c(x,y)) := lapply(.SD, function(x) {as.numeric(x)}), .SDcols = c(x,y)]
ggplot(dt) + geom_step(aes(x=get(names(dt)[x]), y=get(names(dt)[y]))) + labs(x=names(dt)[x], y=names(dt)[y])
}
> dtDiamonds <- data.table(ggplot2::diamonds[2:5,1:3]);
> dtDiamonds
carat cut color
<num> <ord> <ord>
1: 0.21 Premium E
2: 0.23 Good E
3: 0.29 Premium I
4: 0.31 Good J
> plotYofX(dtDiamonds,1,2);
> dtDiamonds
carat cut color
<num> <num> <ord>
1: 0.21 4 E
2: 0.23 2 E
3: 0.29 4 I
4: 0.31 2 J
我看过很多关于与使用相关的各种问题的帖子:=
在函数内部,但找不到任何可以帮助我解决这个看似很简单的问题。 (当然,我不知道将其转换回什么data.frame
以达到预期的结果)