我想用“ No_ [colname] _found”替换数据框中的每个NA。 (如果有一个值,我想保留它。)我知道我可以为每一列分别做到这一点,但是我有> 100列。
首先,我尝试用colname替换数据框中的每个NA。我知道如何添加“ No_”和“ _found”(通过使用粘贴)。 到目前为止,这是我一直未尝试的尝试:
DF <- apply(DF, 2, function(x){ifelse(is.na(x), colnames(DF)[x], x)})
DF <- apply(DF, 2, function(x){ifelse(is.na(x), colnames(x), x)})
DF <- apply(DF, 2, function(x){ifelse(is.na(x), colnames(DF[x]), x)})
到目前为止,我一直没有收到错误消息。但是我的NA值不会更改为别名,它们仍然是NA。
答案 0 :(得分:0)
我们可以尝试在输入数据框的名称上使用lapply
:
df <- data.frame(v1=c(1,NA,3), v2=c(4,5,6), v3=c(NA,8,NA))
output <- data.frame(lapply(names(df), function(x) {
ifelse(is.na(df[[x]]), paste0("No_", x, "_found"), df[[x]])
}))
names(output) <- names(df)
df
v1 v2 v3
1 1 4 NA
2 NA 5 8
3 3 6 NA
output
v1 v2 v3
1 1 4 No_v3_found
2 No_v1_found 5 8
3 3 6 No_v3_found