एक आबादी वाले data.table और एक अन्य एक के बाद एक एनए पंक्ति data.table जिसके परिणामस्वरूप में है कि खाली प्रस्तुत किया जो मर्ज कर:merge.data.table सभी के साथ = सही परिचय एनए पंक्ति। क्या ये सही है?
a = data.table(c=c(1,2),key='c')
b = data.table(c=3,key='c')
b=b[c!=3]
b
# Empty data.table (0 rows) of 1 col: c
merge(a,b,all=T)
# c
# 1: NA
# 2: 1
# 3: 2
क्यों? मैं उम्मीद है कि यह data.table a
का केवल पंक्तियों को वापस होगा, क्योंकि यह merge.data.frame के साथ करता है:
> merge.data.frame(a,b,all=T,by='c')
# c
#1 1
#2 2
तो आप एक खाली डेटा तालिका 'बी' के साथ' a' मर्ज करना चाहते हैं। आप असामान्य तरीके से 'बी' क्यों पेश करते हैं? 'B = data.table()' का उपयोग क्यों न करें? – user974514
@ user974514: मैं सिर्फ समस्या को पुन: पेश करना चाहता था क्योंकि यह मेरे कोड में दिखाई दिया था। आम तौर पर मेरे कोड में 'data.table' पॉप्युलेट होता है, लेकिन कभी-कभी नहीं, और मेरे मामले में तालिकाओं की कुंजी होती है और मर्ज स्वाभाविक रूप से इन चाबियों का उपयोग करती है। एक साधारण 'data.table()' वास्तव में मेरी समस्या का पुन: उत्पन्न नहीं करता है। – vsalmendra
@ user974514, जो एक पूर्ण डेटा.table (0 पंक्तियों और स्तंभ) देगा और कोई "कुंजी" कॉलम नहीं होगा। तो, विलय संभव नहीं होगा। – Arun