Вы, кажется, хотите получить вектор, который является парным максимумом двух векторов.
set.seed(1)
dtf <- as.data.frame(matrix(sample(1:20), 10))
dtf$max <- apply(dtf[,1:2], 1, max)
# or
dtf$max <- pmax(dtf[,1], dtf[,2])
head(dtf)
# V1 V2 max
# 1 6 3 6
# 2 8 2 8
# 3 11 20 20
# 4 16 10 16
Вы получаете ошибку, потому что вектор, который вы хотите заменить, не имеет ту же длину, что и тот, который вы хотитезамените его на.
dtf$V1[dtf$V1 < dtf$V2]
# is shorter than
dtf$V2
# this will work, because the two vectors are of the same length
dtf$V1[dtf$V1 < dtf$V2] <- dtf$V2[dtf$V1 < dtf$V2]
Ошибка говорит о multiple of replacement length
, потому что, строго говоря, они не должны быть одинаковой длины.Тот, которым вы заменяете, может быть короче, если его длина является делителем длины вектора, который вы заменяете.
# that's why this works
dtf$V1[dtf$V1 < dtf$V2] <- NA
# and this
dtf$V1[dtf$V1 < dtf$V2] <- 1:2
# but not this
dtf$V1[dtf$V1 < dtf$V2] <- 1:3