Есть ли способ в R заменить значения в каждой строке матрицы / кадра данных конкретным значением из этой строки?
Например, у меня есть следующая матрица:
df<-cbind(c("A","C","G","T"),c("T","G","C","A"),c(0,1,0,1),c(1,0,1,0),c(0,1,0,1))
df
# [,1] [,2] [,3] [,4] [,5]
#[1,] "A" "T" "0" "1" "0"
#[2,] "C" "G" "1" "0" "1"
#[3,] "G" "C" "0" "1" "0"
#[4,] "T" "A" "1" "0" "1"
и я хочу заменить нули в каждой строке соответствующей буквой из первого столбца этой строки, чтобы новая матрица выглядела следующим образом:
newdf
# [,1] [,2] [,3] [,4] [,5]
#[1,] "A" "T" "A" "1" "A"
#[2,] "C" "G" "1" "C" "1"
#[3,] "G" "C" "G" "1" "G"
#[4,] "T" "A" "1" "T" "1"
Самое близкое, что мне удалось получить, это следующие команды, но он не заменяет нули правильными значениями из столбца 1.
df[df==0]<-NA
df[, 3:ncol(df)][is.na(df[, 3:ncol(df)])] <- df[,1]