প্রোগ্রাম্যালি ভেরিয়েবল (গুলি) নির্বাচন করার দুটি উপায় :
with = FALSE:
DT = data.table(col1 = 1:3)
colname = "col1"
DT[, colname, with = FALSE]
'ডট ডট' ( ..) উপসর্গ:
DT[, ..colname]
'ডট ডট' ( ..) স্বরলিপিটির আরও বিবরণের জন্য , 1.10.2 এ নতুন বৈশিষ্ট্যগুলি দেখুন (এটি বর্তমানে সহায়তা পাঠ্যে বর্ণিত নয়)।
করার দায়িত্ব অর্পণ পরিবর্তনশীল (গুলি), এর LHS মোড়ানো :=বন্ধনীর মধ্যে:
DT[, (colname) := 4:6]
পরেরটি একটি কলাম চূড়া হিসাবে পরিচিত , কারণ আপনি রেফারেন্স দ্বারা পুরো কলাম ভেক্টর প্রতিস্থাপন। যদি কোনও উপসেট iউপস্থিত থাকে, তবে এটি রেফারেন্স সহ সাবসাইন করবে। ডান বন্ধনী কাছাকাছি (colname)একটি সাঁটে লেখার Cran অক্টোবর সংস্করণটি v1.9.4 চালু হয় 2014. এখানে সংবাদ আইটেম :
ব্যবহার with = FALSEসঙ্গে :=এখন সব ক্ষেত্রে নিন্দা করা হয়েছে, দেওয়া যে LHS মোড়কে :=বন্ধনী সহ কিছু সময়ের জন্য পছন্দসই হয়েছে।
colVar = "col1"
DT[, (colVar) := 1]
DT[, c("col1", "col2") := 1]
DT[, 2:4 := 1]
DT[, c("col1","col2") := list(sum(a), mean(b))]
DT[, `:=`(...), by = ...]
বিস্তারিত বিভাগেও দেখুন ?`:=`:
DT[i, (colnamevector) := value]
এবং মন্তব্যে আরও প্রশ্নের উত্তর দেওয়ার জন্য, এখানে একটি উপায় (যথারীতি অনেকগুলি উপায় রয়েছে):
DT[, colname := cumsum(get(colname)), with = FALSE]
বা, আপনি সহজে পড়তে পারে, লিখুন এবং শুধু ডিবাগ evalএকটি paste, একটি গতিশীল SQL বক্তব্য নির্মাণের একটি সার্ভারে পাঠাতে অনুরূপ:
expr = paste0("DT[,",colname,":=cumsum(",colname,")]")
expr
eval(parse(text=expr))
যদি আপনি এটি অনেক কিছু করেন তবে আপনি কোনও সহায়ক ফাংশন সংজ্ঞায়িত করতে পারেন EVAL:
EVAL = function(...)eval(parse(text=paste0(...)),envir=parent.frame(2))
EVAL("DT[,",colname,":=cumsum(",colname,")]")
এখন যে data.table1.8.2 স্বয়ংক্রিয়ভাবে jদক্ষতার জন্য অনুকূলিত হয়েছে, এটি evalপদ্ধতিটি ব্যবহার করা ভাল । get()মধ্যে j, কিছু অপ্টিমাইজেশন বাধা দেয় উদাহরণস্বরূপ।
বা, আছে set()। একটি নিম্ন ওভারহেড, এর কার্যকরী ফর্ম :=, যা এখানে ঠিক থাকবে। দেখুন ?set।
set(DT, j = colname, value = cumsum(DT[[colname]]))
DT