[R] Insert row in specific location between data frames

David L Carlson dcarlson at tamu.edu
Fri Jun 29 20:28:08 CEST 2012


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-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Peter Ehlers
> Sent: Friday, June 29, 2012 1:04 PM
> To: pigpigmeow
> Cc: r-help at 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 at 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 at 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.



More information about the R-help mailing list