You are having the problem because you have a one column data frame. When you extract that column, R converts it to a vector. You can insert the NA into the vector and then convert it to a data.frame or you can prevent R from converting the data.frame to a vector and insert the row using a slightly modified version of your code:
# Prevent conversion to a vector with drop=FALSE topdata <- predict_SO2_a[1:10, , drop=FALSE] bottomdata <- predict_SO2_a[11:nrow(predict_SO2_a), , drop=FALSE] # Assign a column name in nadata so rbind works properly nadata <- data.frame(predict_SO2_a=NA) # skip d1 step and merge everything at once. rbind() gives you a # data frame, but the row.names are messed up, this command fixes that d2 <- data.frame(rbind(topdata, nadata, bottomdata), row.names=NULL) ---------------------------------------------- David L Carlson Associate Professor of Anthropology Texas A&M University College Station, TX 77843-4352 > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-bounces@r- > project.org] On Behalf Of Peter Ehlers > Sent: Friday, June 29, 2012 1:04 PM > To: pigpigmeow > Cc: r-help@r-project.org > Subject: Re: [R] Insert row in specific location between data frames > > > On 2012-06-29 10:01, pigpigmeow wrote: > > Hi everyone! I have a simple question. > > > > my data is > > predict_SO2_a > > 1 39.793231 > > 2 30.252578 > > 3 32.467584 > > 4 31.941509 > > 5 27.908320 > > 6 11.594137 > > 7 9.368125 > > 8 12.319093 > > 9 11.558811 > > 10 7.937192 > > 11 11.211306 > > 12 12.400342 > > 13 12.393146 > > 14 13.256160 > > 15 10.709600 > > 16 9.966334 > > 17 28.850652 > > 18 10.024405 > > > > > > > > I want to insert row which is "NA" in 10th row > > Try this: > > d <- data.frame(x = 101:118, y = rnorm(18)) > d2 <- data.frame( > rbind(head(d, 9), NA, tail(d, -9)), > row.names = NULL) > > Peter Ehlers > > > > > that is .. > > predict_SO2_a > > 1 39.793231 > > 2 30.252578 > > 3 32.467584 > > 4 31.941509 > > 5 27.908320 > > 6 11.594137 > > 7 9.368125 > > 8 12.319093 > > 9 11.558811 > > 10 NA > > .... > > and it becomes 19 rows in this data. > > > > > > however, I can't do this. my scipt is following > > topdata<- predict_SO2_a[1:10,] > > bottomdata<- predict_SO2_a[11:nrow(predict_SO2_a),] > > nadata<- data.frame(NA) > > d1<- rbind(topdata,nadata) > > d2<- rbind(d1, bottomdata) > > > > what is my problem?! > > > > Thank in advance! > > > > > > > > > > -- > > View this message in context: http://r.789695.n4.nabble.com/Insert- > row-in-specific-location-between-data-frames-tp4634905.html > > Sent from the R help mailing list archive at Nabble.com. > > > > ______________________________________________ > > R-help@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide http://www.R-project.org/posting- > guide.html > > and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting- > guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.