2013-08-29 10 views
6

एक डेटा.table में एक नया कॉलम बनाना संभव है और एक ही समय में मौजूदा कॉलम अपडेट करना संभव है? निम्नलिखित काम नहीं किया। धन्यवाद।आर डेटाटेबल segfault एक कॉलम को अपडेट करने का प्रयास करते समय और एक और

library(data.table) 
dt <- data.table(x=runif(4), y=runif(4), z=c("x","x","y","y")) 
dt[, c("x", "y") := list(x[1], y[1]), by=z]  # works 
dt[, c("x", "newx") := list(x[1], y[1]), by=z] 

पकड़ा SEGFAULT:

address 0x20000010, cause 'memory not mapped' 

Traceback:

1: [.data.table(dt, , :=(c("x", "newx"), list(x[1], y[1])), by = z) 
2: dt[, :=(c("x", "newx"), list(x[1], y[1])), by = z] 
+0

ओह, हाँ, मैंने पहले भी ऐसा किया है। मुझे लगता है कि मैंने इसे एक बग के रूप में दर्ज करने के बजाय इसे करने से बचा है। – Frank

उत्तर

5

हां। लेकिन आप निम्नलिखित से समाधान प्राप्त कर आर-फोर्ज से v1.8.9 की जरूरत है:

ओ मिश्रण को जोड़ने और एक डीटी [, := (existingCol = ..., newCol = ...) में अद्यतन करने, = द्वारा। ..] अब बिना त्रुटि या segfault, # 2778 और # 2528 काम करता है। और अच्छे पुनरुत्पादित उदाहरणों के लिए अरुंकुमार श्रीनिवासन को बहुत धन्यवाद। टेस्ट जोड़ा गया।

v1.8.9 में अन्य परिवर्तनों के लिए latest NEWS (अद्यतन लाइव) देखें।

+2

v1.8.9 के लिए .tar.gz फ़ाइल कहां मिलती है? –

+5

@DWin यह आर-फोर्ज पर है, यहां: 'आर-Forge.R-project.org/src/contrib/data.table_1.8.9.tar.gz'। आप इसे सीधे कुछ इंस्टॉल कर सकते हैं: 'install.packages ("data.table", repos = "http://R-Forge.R-project.org", टाइप = "स्रोत") '। –

+0

धन्यवाद। मेरा विश्वास करो, मैं _do_ जानता हूं कि स्रोत से कैसे स्थापित करें। और मैं आम तौर पर पैकेज ढूंढने में सक्षम हूं, लेकिन आर-फोर्ज का वर्तमान सेटअप मेरी सामान्य खोज रणनीतियों को निराशाजनक प्रतीत होता है। आर-फोर्ज में पैकेज के पैक किए गए डेवेल संस्करण के लिए कोई मानक स्थान है? –

संबंधित मुद्दे