Я пытаюсь заменить строку в нескольких фреймах данных, сохраненных в списке, другой строкой. Ниже приведен типичный код того, что мне нужно. В этом примере я пытаюсь заменить слово «белый» на «синий» в dat1 и dat2, но замена не работает. Проблема с моей индексацией df.list? Я попытался проиндексировать df.list $ D в as.character (), но выскочила ошибка.
dat1 <- data.frame(c(1,2,3,4), c(10, 20, 30, 40),
c(100, 200, 300, 400), c("red G white 40 R3", "red G white 40 R5",
"red H white 40 R7", "red H white 40 R10"))
dat2 <- data.frame(c("red G white 40 R3", "red G white 40 R5",
"red H white 40 R7", "red H white 40 R10"))
colnames(dat1) <- c("A", "B", "C", "D")
colnames(dat2) <- c("D")
df.list <- list(dat1, dat2)
for(i in 1:length(df.list)){
df.list[[i]]$D <- lapply(df.list, function(df.list) sub("white", "blue",
as.character(df.list$D), fixed = TRUE))
}