2015-08-20 10 views
6

मैं समझता हूं कि magrittr::inset() डेटाफ्रेम में एक नए कॉलम में वेक्टर असाइन करने में सक्षम होना चाहिए (extract() के विपरीत के रूप में)। लेकिन मुझे समझ में नहीं आता कि वाक्यविन्यास कैसे काम करना चाहिए।मैं magrittr :: inset() का उपयोग कैसे करूं?

एक खिलौना उदाहरण के रूप में कहते हैं कि मुझे मिल गया है,:

df = data.frame(id = 1:26, letter = letters) 
newvalue = rnorm(26) 

मैं एक magrittr श्रृंखला के भीतर df में एक नया स्तंभ के रूप में NEWVALUE जोड़ना चाहते हैं।

df %>% 
    inset('new_column_name', newvalue) 

लेकिन वह काम नहीं करता, शायद क्योंकि मैं काफी समझ में नहीं आता क्या [<- के लिए वाक्यविन्यास (जिसके लिए inset() एक उपनाम है) की तरह दिखना चाहिए: मैं इसे की तरह कुछ है संभालने हूँ। एक magrittr श्रृंखला के

बाहर, मैं कर सकता:

df['new_column_name'] <- newvalue 

लेकिन मेरे सवाल यह है कि एक श्रृंखला है, जहां मैं पहले से ही विभिन्न और asundry संचालन किया है के भीतर यह करने के लिए है।

+0

'df%>% इनसेट (" इस ", मान = पत्र)' – hrbrmstr

+0

मैं शायद लगता है कि 'df%>% इनसेट (1: 26, 'new_column', पत्र)' काम करता है। – joran

+0

'inset'' [<-' और '[<-' 'के लिए एक उपनाम है जिसे आमतौर पर' var [arg1, arg2] <- arg3' के साथ कहा जाता है जो' "[<-" (arg1, arg2, arg3 'के बराबर है) ' – Vlo

उत्तर

6

बनाम मेरे त्वरित टिप्पणी अपने उदाहरण ले रहा है:

library(magrittr) 

df <- data.frame(id = 1:26, letter = letters) 

newvalue <- rnorm(26) 

यहाँ तुम सब करने की जरूरत है:

df %>% inset("newvalue", value=newvalue) 

## id letter newvalue 
## 1 1  a -0.44805172 
## 2 2  b -0.36284495 
## 3 3  c 1.56175094 
## 4 4  d 1.48775535 
## 5 5  e -0.29086149 
## 6 6  f 0.46456966 
## 7 7  g 0.01130394 
## 8 8  h 0.57100808 
## 9 9  i -0.87445603 
## 10 10  j 0.7 
... 

लेकिन, आप छोड़ सकते हैं magrittr के inset() कुल मिलाकर के बाद से इस काम करता है:

`[<-`(df, "newvalue", value=newvalue) 

## id letter newvalue 
## 1 1  a -0.44805172 
## 2 2  b -0.36284495 
## 3 3  c 1.56175094 
## 4 4  d 1.48775535 
## 5 5  e -0.29086149 
## 6 6  f 0.46456966 
## 7 7  g 0.01130394 
## 8 8  h 0.57100808 
## 9 9  i -0.87445603 
... 

तो करता है:

df %>% `[<-`("newvalue", value=newvalue) 
संबंधित मुद्दे