It's not character if it's turning it to numeric, it's a factor. Use str
to check this. This will get you going:
df2$station <- as.character(df2$station)
EDIT: or use keep R from converting strings to factors when you crate the data frame:
df2 <- data.frame(cbind(station,value), stringsAsFactors = FALSE)
Console output:
> station <- c(1:10)
> value <- c(101:110)
> df1 <- data.frame(cbind(station,value))
> station <- c("a","b")
> value <- c(101:102)
> df2 <- data.frame(cbind(station,value))
> df2$station <- as.character(df2$station)
>
> library(plyr)
> data1 <- rbind.fill(df1,df2)
> data1
station value
1 1 101
2 2 102
3 3 103
4 4 104
5 5 105
6 6 106
7 7 107
8 8 108
9 9 109
10 10 110
11 a 1
12 b 2