0

在正常的一次性脚本方式中,我有一个带有标题的 data.table:

日期 | 时间 | 价值

然后将DateTime粘贴在一起,以便稍后解析为 POSIX。

问题在于试图将过程参数化(我认为这是正确的词)到一个函数中,我不能保证它Date总是明确的“日期”。它很容易是date, DATE, rdate(出于某种原因),或者任何东西。

现在我的函数产生:

日期 | 时间 | 价值 | 约会时间

..但正如我所提到的,DateTime很容易rDateTimeTime并且Value被设置在其他地方,并且不会改变。

编辑当前,该函数从函数输入中捕获实际的字符串。

功能(hhDT,colDate =“rdate”)

问题是:

setcolorder中,列标题在c()函数中作为字符提供,如下所示:

setcolorder(fooDT, c("col1", "col2", "col3",....))

c()当部分已知和部分用户定义并在角色对象中捕获colDate时,将参数提供给的“正确”方法是什么?

IE

setcolorder(fooDT,c(colDate,“时间”,粘贴结果(colDate,“时间”),“值”))

wherecolDate是用参数 colDate 引用的字符串,...的结果是该伪代码的结果,即rDateTimeor dateTimeor randomstringTime

4

1 回答 1

1

列位置是否恒定?如果是这样,您应该使用它。
如果您不能确定它们将来会保持不变,您可以轻松地将位置检查构建Time为第 2 列和Value位置作为第 3 列。如果有任何不正确的只是提出错误。
不要专注于setcolorder产生c预期的字符向量。
您的解决方案几乎可以工作,您可以paste在里面嵌套c

mysetcolorder <- function(DT, colDate){
    stopifnot(is.data.table(DT), is.character(colDate), colDate %in% names(DT))
    setcolorder(DT, c(colDate, "Time", paste0(colDate, "Time"), "Value"))
}

如果它没有回答您的问题,您可以为明天的 R 用户组带一台笔记本电脑,我们将使其工作并更新答案:)

于 2015-08-10T20:45:11.240 回答