2014-07-02 15 views
25

साथ सशर्त जगह स्तंभ मानों मैं data.table निम्नलिखित है:data.table

dt <- data.table(col1 = rep("a",6), col2 = c(1,1,1,2,3,1)) 

अब मैं बदलना चाहते हैं सभी 1 के साथ मूल्य "bigDog" col2 में। मैं data.frame भावना का उपयोग कर ऐसा कर सकते हैं:

dt$col2[dt$col2==1,] <- "bigDog" 

लेकिन मुझे आश्चर्य है कि वहाँ एक अलग तरह से "उन्मुख data.table" है, और अधिक तो क्या होगा?

उत्तर

31

था आप, क्या तुम चाहते स्तंभ के प्रकार बदलने के लिए नहीं चाहता:

dt[col2 == 1, col2 := 123] 
प्रकार परिवर्तन के साथ

, आप कर सकते हैं:

dt[, col2 := as.character(col2)][col2 == "1", col2 := "bigDog"] 

आप परिवर्तन नहीं करते हैं पहले प्रकार, "bigDog" को पूर्णांक, यानी NA पर ले जाया जाएगा। आपको निश्चित रूप से चेतावनियों का एक समूह भी मिल जाएगा।

ध्यान दें कि := का उपयोग करके कम बोझिल वाक्यविन्यास के अलावा डेटा की अतिरिक्त प्रतियां (<- इच्छा) नहीं होने का लाभ होता है और इसके बजाय जगह में संशोधित होता है।

+0

मान लीजिए कि मैं कॉलम प्रकार को बदलना नहीं चाहता हूं, मैं एकाधिक (नामित) कॉलम में पहला उपयोग कैसे लागू कर सकता हूं? – rimorob

+1

@rimorob सुनिश्चित करें - 'डीटी [हालत, \': = \ '(col2 = 123, col3 = 234, ...)]' – eddi

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