У меня есть data.frame
, который выглядит следующим образом:
df <- structure(list(
a = c("atg", "tga", "agt", "acc", "cgt", "gca",
"gtc", "ggg", "ccc"),
b = c("1", "2", NA, "3", NA, NA, "4", "5",
"6")
),
row.names = c(NA, -9L),
class = "data.frame")
Я заменил NAs
на ближайший non-NA
, используя na.locf
из пакета zoo
, но мне нужнодобавить добавочную букву к замененным значениям NA
, чтобы конечный продукт выглядел следующим образом:
> df
a b
1 atg 1
2 tga 2
3 agt 2a
4 acc 3
5 cgt 3a
6 gca 3b
7 gtc 4
8 ggg 5
9 ccc 6
Я написал небольшую функцию if
, которая соответствующим образом заполняет NA
, но добавляет буквыдля всех значений и перезагружает числа, чтобы соответствовать длине letters
.Я вижу, что это результат вызова any
внутри функции, о которой я сейчас думаю, что мне, вероятно, нужно сделать цикл for
и использовать его для приращения через каждую ячейку, однако цикл for
с вариантомif
оператор ничего не делает.Любые предложения приветствуются.
> testif <- function(x) {
+ if (any(is.na(x))) {
+ paste(na.locf(x), letters, sep = "")
+ }
+ }
for (x in df$b) {
+ if (any(is.na(x))) {
+ paste(test$b, na.locf(x), letters, sep = "")
+ }
+ }