0

通常の 1 回限りのスクリプトの方法では、見出しを持つ data.table があります。

日付 | 時間 | 価値

これは、後で POSIX として解析されるように一緒に貼り付けられますDateTime

問題は、プロセスを関数にパラメーター化しようとすることです (正しい言葉だと思います) Date。常に明示的に「日付」になることは保証できません。dateDATErdate(何らかの理由で)、または実際には何でもかまいません。

現在、私の関数は以下を生成します:

日付 | 時間 | 値 | 日付時刻

..しかし、私が述べたように、DateTime簡単にそうなる可能性がありますrDateTimeTimeただし、他の場所に設定されておりValue、変更されません。

EDIT現在、関数は関数入力から実際の文字列をキャプチャします。

関数 (hhDT、colDate = "rdate")

問題は次のとおりです。

では、列ヘッダーが次のように関数setcolorder内の文字として提供されます。c()

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

c()一部が既知で一部がユーザー定義であり、文字オブジェクトに取り込まれてcolDateいる場合、引数を に供給する「正しい」方法は何ですか?

すなわち

setcolorder(fooDT, c( colDate, "Time",ペーストの結果(colDate, "Time") , "Value"))

ここcolDateで は引数 colDate で参照される文字列であり、 ...の結果はその疑似コード ierDateTimeまたはdateTimeまたはの結果ですrandomstringTime

4

1 に答える 1

1

列の位置は一定ですか? もしそうなら、あなたはそれを使うべきです。
それらが将来的に一定であると確信できない場合は、Time2 列目とValue3 列目の位置のチェックを簡単に組み込むことができます。真でない場合は、エラーを発生させます。
注目するのでは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 に答える