我想在函数中将输入传递给setorder。理想情况下,我希望函数在数据表中获取数据表名称和变量名称,根据变量重新排序表,然后执行其他操作。
以下是我想做的不起作用的例子。
dt <- data.table(replicate(10,sample(0:100,1000,rep=TRUE)))
sortFunction <- function(dt,var) {
v2 <- deparse(substitute(var))
data.table::setorder(dt,v2)
return(dt)
}
sortFunction(dt, var = "V1")
理想情况下,我希望函数能够识别出字符变量dt
是全局环境中的数据表;即dt
和var
都将作为字符变量传递,然后被识别为数据表和
答案 0 :(得分:2)
这是我最终做的事情。
继续传递数据表而不是尝试通过它访问它 得到(DT,ENVIR = .GlobalEnv。
使用setorderv与数据表和的字符名称 列,因为setorderv需要列名/列名 字符变量。
虽然这不是问题,但我试图做的是一些 函数内的图形。我想出了如何在j字段中放置一系列图 数据表。
这是目前的完整功能。我在没有完整解释的情况下发布它,因为在我发布此问题之前获得此代码片段对我有用。
deltaPlot <- function(dt, var, title, ylabel, regions) {
if (missing(regions)) {regions <- 156}
dt.temp <- data.table::copy(dt)
data.table::setorderv(dt.temp, var)
junk <- dt.temp[,{
plot(x = get(var), type = "s", main = title,
ylab = ylabel,
xlab = "",
xaxt = "n",
cex.lab = 0.8, mgp = c(2.5, 1, 0),
yaxs = "r")
abline(h = 0)
axis(1, at = 1:regions, labels = region_code.IMPACT159, cex.axis = 0.5)}
]
}
var和region_code.IMPACT159中包含的字符串都是dt中的列。 var列是数字,region_code.IMPACT159是字符。
deltaPlot(dt = dt.budgetShare.wide,
var = "delta.SSP1", title = "Delta SSP1",
ylabel = "Change in IMPACT commodity\nshare of per capita GDP (%)"
)