Your code works for me
A <- c("a","b","c","d")
B <- c("i","","k","l")
C <- c("m","j","o","p")
D <- c("","o","","")
df <- data.frame(A,B,C,D, stringsAsFactors = FALSE)
df[2,2:3] <- df[2,3:4]
#remove column D
df <- df[,1:3]
> df
A B C
1 a i m
2 b j o
3 c k o
4 d l p
But beware, if you're trying this shift on factors you'll get this error:
Warning message:
In [<-.factor
(*tmp*
, iseq, value = 1L) :
invalid factor level, NA generated
So you'll have to convert your columns from factor to character first, for example using one of these methods:
df <- data.frame(A,B,C,D)
df <- data.frame(lapply(df, as.character), stringsAsFactors=FALSE)
df[2,2:3] <- df[2,3:4]
#remove column D
df <- df[,1:3]