2010-09-06 18 views

उत्तर

11

मैं यह दावा नहीं करता कि यह सबसे सुंदर और सुंदर समाधान है, लेकिन यह काम पूरा हो जाता है। ध्यान दें कि प्रत्येक डेटाफ्रेम पंक्ति में अपना स्वयं का पंक्ति नाम होता है, जो नई लाइनों को सम्मिलित करते समय एक समस्या बन जाता है। कहा जा रहा है, आप इसे row.names (नीचे देखें) के साथ संशोधित कर सकते हैं।

my.df <- data.frame(a = runif(10), b = runif(10), c = runif(10)) 
my.vec <- c(1, 1, 1) 
new.df <- rbind(my.df[1:5, ], my.vec, my.df[6:nrow(my.df), ]) 
new.df 
      a   b   c 
1 0.45433791 0.3798105 0.84514864 
2 0.07074529 0.4985765 0.53912585 
3 0.09645574 0.5441647 0.96636213 
4 0.60788436 0.6070706 0.53791603 
5 0.01593911 0.1697248 0.62697924 
6 1.00000000 1.0000000 1.00000000 
61 0.98455694 0.2206702 0.85500531 
7 0.85356834 0.5279596 0.27462326 
8 0.48028935 0.6689572 0.05428349 
9 0.95675901 0.6875491 0.77642924 
10 0.24691330 0.7980741 0.24013096 

row.names(new.df) <- 1:nrow(new.df) # make row names pretty again 
+0

आप 'rbind' में' name.row.names = FALSE' –

1

वेक्टर से एक अनुसंधान dataframe बनाओ, क्षैतिज

कुंजी अंतर्दृष्टि आर पक्षांतरित विधि का उपयोग करने के लिए है: t(...) वेक्टर स्थानांतरित करने के लिए इससे पहले कि आप data.frame निर्माता के लिए गुजरती हैं।

my_name_vector  = c("penguin1", "penguin2", "penguin3", "penguin4"); 
my_data_vector  = c("Skipper", "Kowalski", "Rico",  "Private"); 
supplemental_vector = c("Mumble", "Dorthy", "Norma", "Memphis"); 

#create a data frame out of a transposed vector 
penguins = as.data.frame(t(my_data_vector)); 
#change the names of the dataframe to be the titles 
colnames(penguins) <- my_name_vector; 

supplemental_data_frame <- data.frame(t(supplemental_vector)); 
colnames(supplemental_data_frame) <- my_name_vector; 
supplemental_data_frame; 

#rbind means row bind, pass in two data.frame 
penguins <- rbind(penguins, supplemental_data_frame); 
penguins; 

प्रिंटों:

penguin1 penguin2 penguin3 penguin4 
1 Mumble Dorthy Norma Memphis 

    penguin1 penguin2 penguin3 penguin4 
1 Skipper Kowalski Rico  Private 
2 Mumble Dorthy Norma Memphis 

rbind विधि, बहुत अक्षम है, इसलिए यदि आप कुछ सौ पंक्तियों की तुलना में इस अधिक कर रहे हैं, लंबे समय तक इंतजार करने की उम्मीद है। https://stackoverflow.com/a/20689857/445131

1

rbind अच्छा है, लेकिन वास्तव में मुश्किल है, हालांकि के रूप में पहले और बाद में सटीक पंक्ति संख्या को संभालने के लिए: यदि आप बिजली त्वरित होने की जरूरत है, तो आप के रूप में यहाँ दिखाया गया है अंतरिक्ष पूर्व आवंटित या सूची विधि का उपयोग करने की जरूरत है। miscTools पैकेज में insertRow का उपयोग करने का एक और तेज़ तरीका है।

ऊपर डाटासेट उदाहरण में, कोड होगा:

my.df <- as.matrix(data.frame(a = runif(10), b = runif(10), c = runif(10))) 
my.vec <- c(1, 1, 1) 
new.df <- insertRow(my.df,7,my.vec) 
new.df 

आशा उपयोगी होगा।

+0

तर्क के साथ पंक्ति नाम कर सकते हैं यह rbind की तुलना में बहुत बेहतर है! धन्यवाद! – Rodrigo

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