Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add a vector to a column of a dataframe

Sorry about this one but I can't find an easy solution to this.

I have a data frame:

>bla<-c(1)
>df<-data.frame(bla)
>df

bla
1   1

I want to append values to the bottom of the column (hence not create a new one, as explained here). For instance, get:

bla
1   1
2   2
3   3
4   4
5   5

I tried:

df[2,1]<-c(2,3,4,5)
df[,1]<-c(2,3,4,5)

but I get:

Error in `[<-.data.frame`(`*tmp*`, 2, 1, value = c(2, 3, 4, 5)) : 
  replacement has 4 rows, data has 1

Maybe dataframes are not appropriate and I should try with matrixes instead? Any suggestion would be much appreciated! :)

like image 466
tlorin Avatar asked Sep 15 '25 22:09

tlorin


2 Answers

You need to convert c(2,3,4,5) to a data frame then use rbind to join the rows as @Ananda Mahto did in his comment

df <- rbind(df, data.frame(bla = c(2,3,4,5)))

Where 'bla' is the name of the column in df

like image 169
HasaniH Avatar answered Sep 17 '25 13:09

HasaniH


Another option if you know the final dimensions in advance is just to create an empty dataframe of the given size and then append rowwise:

blah <- data.frame(matrix(NA, nrow=N, ncol=M))
    for (i in 1:N) {
      yourResults <- yourFunction()
      blah[i,] <- yourResults
    }
like image 29
Paul Gowder Avatar answered Sep 17 '25 15:09

Paul Gowder