मैं शाइनी का उपयोग करके पिवट टेबल यूआई जैसे एक्सेल बनाने की कोशिश कर रहा हूं जिसमें उपयोगकर्ता पंक्ति शीर्षलेख के रूप में एकाधिक फ़ील्ड और कॉलम हेडर के रूप में एक फ़ील्ड चुन सकता है। मैं पिवट टेबल बनाने और शाइनी ऐप में अंतिम आउटपुट प्रदर्शित करने के लिए dcast का उपयोग कर रहा हूं। मैं जिस समस्या का सामना कर रहा हूं वह यह है कि जब मैं नहीं जानता कि उपयोगकर्ता कितने कॉलम का चयन करने जा रहा है (क्योंकि एकाधिक चयन की अनुमति है) तो मैं dcast का उपयोग कैसे करूं?

असल में मैं ऐसा कुछ करना चाहता हूं:

Dcast(data_table, Column1 + Column2 + ... + ColumnN ~ ColumnsX, fun.aggregate = sum, value.var = ColumnZ)

जहाँ, Column1, ..., ColumnN , ColumnsX, ColumnZ सभी उपयोगकर्ता चयनित कॉलम हैं। चयनित कॉलम की सूची वर्ण स्ट्रिंग के वेक्टर में उपलब्ध है: input_list = c("Column1",,"Column2",...,"ColumnN")

मैं dcast का उपयोग किए बिना इस समस्या के वैकल्पिक समाधान के लिए भी तैयार हूं।

अग्रिम में धन्यवाद।

0
Ankur Zaveri 4 अक्टूबर 2017, 09:22

1 उत्तर

सबसे बढ़िया उत्तर

सूत्र इंटरफ़ेस का उपयोग करते समय, यह जानना आसान होता है कि आप इसे टेक्स्ट स्ट्रिंग के रूप में भी प्रदान कर सकते हैं।

dt <- data.frame(y = c(1,2,3), x1 = c(1,2,3), x2 = c(1,2,3))

बकवास उदाहरण के लिए खेद है, लेकिन यह बात पार हो जाती है।

यहाँ सरल रूप है:

dcast(dt, y ~ x1 + x2)

अब हम इसे as.formula के साथ टेक्स्ट फॉर्म में सप्लाई करते हैं:

dcast(dt, as.formula("y ~ x1 + x2"))

और यहाँ हम और भी आगे बढ़ते हैं, इसे चर नामकरण के आधार पर पूरी तरह से गतिशील बनाते हैं:

dcast(dt, as.formula(paste("y ~", paste(grep("^x", colnames(dt), value = T), collapse = "+"))))

तीनों समान आउटपुट प्रदान करते हैं।

और चमकदार ऐप के मामले में, आपको शायद यूआई में कुछ चयन विधि द्वारा आपूर्ति किए गए नामों का वेक्टर मिलता है। तो इस मामले में, यह इन पंक्तियों के साथ कुछ ऐसा दिखाई देगा:

server <- function(input, output){
    output$sometable <- renderTable({
        dcast(dt, as.formula(paste("y ~", paste(input$someselectionmethod, collapse = "+"))))
    }
}
1
statespace 4 अक्टूबर 2017, 10:27
आपकी प्रतिक्रिया के लिए धन्यवाद। जबकि दूसरा विकल्प मेरे लिए काम करता है, क्या मैं तीसरे विकल्प में और सुधार कर सकता हूं जब मेरे कॉलम नामों में पैटर्न नहीं है?
 – 
Ankur Zaveri
4 अक्टूबर 2017, 10:04
ठीक है, आपको नामों की सूची कहीं से प्राप्त करनी होगी। या तो किसी अन्य वस्तु से, या पैटर्न से, या बाहरी फ़ाइल द्वारा इसकी आपूर्ति.. या वास्तव में कुछ भी। यह केवल नामों की सूची का अनुमान नहीं लगा सकता, आपको तर्क देना होगा।
 – 
statespace
4 अक्टूबर 2017, 10:17