2012-04-21 20 views
8

मैं प्रतिस्थापन और नमूना के साथ लंबाई 7 के वेक्टर एक्स का नमूना देना चाहता हूं जो कि वेक्टर 10 अलग-अलग समय है। मैंने निम्न की तरह कुछ करने की कोशिश की है लेकिन परिणामस्वरूप 7x10 आउटपुट मैं नहीं ढूंढ सकता हूं। यह एक 1X7 वेक्टर पैदा करता है, लेकिन मैं समझ नहीं अन्य 9 वैक्टरआर: एकाधिक बार प्रतिस्थापन के साथ एक वेक्टर नमूना

x <- runif(7, 0, 1) 
for(i in 1:10){ 
    samp <- sample(x, size = length(x), replace = T) 
} 

उत्तर

20

यह यह करने के लिए एक बहुत ही सुविधाजनक तरीका है पाने के लिए:

replicate(10,sample(x,length(x),replace = TRUE)) 
4

के बाद आप के साथ नमूने के लिए चाहते करने लगते हैं प्रतिस्थापन, तो आप सिर्फ 7 * 10 नमूने एक ही बार में प्राप्त कर सकते हैं (जो बड़े आकार के लिए और अधिक कुशल है):

x <- runif(7) 
n <- 10 
xn <- length(x) 
matrix(x[sample.int(xn, xn*n, replace=TRUE)], nrow=xn) 

# Or slightly shorter: 
matrix(sample(x, length(x)*n, replace=TRUE), ncol=n) 

दूसरे संस्करण sample का उपयोग करता है सीधे, लेकिन कुछ मुद्दे हैं इसके साथ: यदि x लंबाई 1 की संख्या है, तो बुरी चीजें होती हैं। sample.int सुरक्षित है।

x <- c(pi, -pi) 
sample(x, 5, replace=T) # OK 
x <- pi 
sample(x, 5, replace=T) # OOPS, interpreted as 1:3 instead of pi... 
2

ऐसा लगता है कि आपको एक उपयुक्त उत्तर मिला है, लेकिन यहां एक ऐसा दृष्टिकोण है जो आपके पहले प्रयास के समान है। अंतर यह है कि हम उपयुक्त आयामों के साथ samp परिभाषित करते हैं, और उसके बाद उस वस्तु में क्रमशः सूचकांक को भरते हैं और इसे एक पंक्ति में भरते हैं:

samp <- matrix(NA, ncol = 7, nrow = 10) 
for(i in 1:10){ 
    samp[i,] <- sample(x, size = length(x), replace = T) 
} 
संबंधित मुद्दे