2013-01-27 16 views
15

पर आर से क्लिपबोर्ड पर कैसे लिखें, मैं मैक ओएस सिस्टम पर अपने क्लिपबोर्ड पर लिखने के लिए write.table फ़ंक्शन का उपयोग करने का प्रयास कर रहा हूं। अन्य धागे से, मैं कोशिश की हैमैक

data <- rbind(c(1,1,2,3), c(1,1, 3, 4), c(1,4,6,7)) 
clip <- pipe("pbcopy", "w")      
write.table(data, file="clip")        
close(clip) 

इस कोड को किसी भी त्रुटि संदेश नहीं देता है, लेकिन यह भी क्लिपबोर्ड कुछ भी नकल नहीं है। कोई सुझाव?

+0

देखें:: "

मैं भी क्लिपबोर्ड पर अंतिम परिणाम देखने के एक छोटे से सहायक समारोह लिखा http://stackoverflow.com/questions/9035674/r-function-to-copy- टू-क्लिपबोर्ड-ऑन-मैक-ओएसएक्स/9036742 – Rob

उत्तर

23

मैं इसे परीक्षण करने के लिए ओएस एक्स के तहत किसी भी मशीन की जरूरत नहीं है, लेकिन मुझे लगता है कि आप "clip" के बजाय सिर्फ clip उपयोग करना चाहिए:

data <- rbind(c(1,1,2,3), c(1,1, 3, 4), c(1,4,6,7)) 
clip <- pipe("pbcopy", "w")      
write.table(data, file=clip)        
close(clip) 

यहाँ clip एक अनुसंधान वस्तु है।

यदि आप file पर स्ट्रिंग "क्लिप" पास करते हैं तो तर्क आर लगता है कि यह एक फ़ाइल नाम है, और क्लिपबोर्ड में अपना डेटा ढूंढने के बजाय, आपको "क्लिप" नामक आर सत्र कार्यशील निर्देशिका में एक फ़ाइल मिलेगी अंदर आपका डेटा।

+0

धन्यवाद! यह पूरी तरह से काम करता है। –

+6

@ लीनाबर्ड: बिल्कुल सही उत्तरों चेकमार्क के लायक हैं। –

+0

यह डेटा के लिए काम करता है, हालांकि, यह विशेष पात्रों के साथ एक स्ट्रिंग के लिए काम नहीं करता है !! – Shambho

7

आप Kmisc पैकेज का उपयोग कर सकते हैं, इसमें क्लिपबोर्ड I/O (पढ़ने/लिखने) बहु-iplatform के लिए 2 फ़ंक्शन शामिल हैं।

data <- data.frame(x1 = c(1,1,2,3), x2= c(1,1, 3, 4), x3= c(1,4,6,7)) 
write.cb(data)    ## wrapper to write.table in pipe("pbcopy") on MAC 
dat <- read.cb(header=T)  ## wrapper to read.table from pipe("pbpaste") on MAC 
dat 
    x1 x2 x3 
1 1 1 1 
2 1 1 4 
3 2 3 6 
4 3 4 7 
+7

किसी भी तरह से यह मेरे मैक पर काम नहीं कर रहा है !! मुझे एक त्रुटि मिल रही है:" बंद करें। कनेक्शन (फ़ाइल) में त्रुटि: अमान्य कनेक्शन " – Shambho

2

मैं मार्को GHISLANZONI

चाल पाइप फ़ाइलों का उपयोग करने के लिए है से क्लिपबोर्ड जवाब से सीधे मैक में डेटा आयात करने के यह अच्छा कोड मिला। आर में पाइप फ़ाइलों को पाइप समारोह के माध्यम से संबोधित किया जा सकता है। इसके बाद आपको मैक क्लिपबोर्ड के अनुरूप पाइप फ़ाइल का उचित नाम जानने की आवश्यकता है, जो "pbpaste" है।

एक बार जब आप यह है कि सभी को एक साथ रखा है, तो आप read.table आदेश के लिए सही सिंटैक्स है:

मैक ओएस एक्स से डेटा आयात किया clipboardR

data <- read.table(pipe("pbpaste"), sep="\t", header=T) 
3

मैक ओएस एक्स पर इस कोशिश:

copy_to_clipboard = function(x,sep="\t",col.names=T,...) { 
    write.table(x 
      ,file = pipe("pbcopy") 
      ,sep=sep 
      ,col.names = col.names 
      ,row.names = F 
      ,quote = F,...) 
} 

और इस:

paste_from_clipboard = function(sep="\t",header=T,...) {  
    read.table(pipe("pbpaste") 
      ,sep=sep 
      ,header=header,...) 
} 
0

मैंने अभी some generic functions लिखा है जो विंडोज़ और मैक दोनों के लिए काम करता है। विंडोज संस्करण के साथ समान पैरामीटर का उपयोग करने के लिए, वे इनपुट वैक्टर के रूप में चरित्र वैक्टर का उपयोग कर रहे हैं।

3

यह एक पुराना सवाल है, लेकिन जब भी मैं क्लिपबोर्ड पर कुछ प्राप्त करने के लिए खोज रहा था तब भी यह एक शीर्ष हिट था।

अब यहां दिए गए किसी भी उत्तर से बेहतर समाधान है: clipr पैकेज।

clipr::write_clip() आपको बस इतना ही चाहिए। यह विंडोज, ओएस एक्स, और एक्स 11 पर काम करता है।

सहायता फ़ाइल से: "write_clip() ऑब्जेक्ट्स को उपयोगी तरीके से लिखने के बारे में स्मार्ट होने का प्रयास करता है। यदि डेटा.फ्रेम या मैट्रिक्स पास किया गया है, तो यह बाहरी स्प्रेडशीट प्रोग्राम में पेस्ट करने के लिए write.table का उपयोग करके इसे प्रारूपित करेगा। यह अन्यथा किसी ऑब्जेक्ट वेक्टर को ऑब्जेक्ट को मजबूर करेगा। ऑटो ऑब्जेक्ट प्रकार की जांच करेगा, अन्यथा तालिका या चरित्र को स्पष्ट रूप से निर्दिष्ट किया जा सकता है।भी

wc <- function(x = .Last.value) { 
    clipr::write_clip(x) 
}