我试图遍历数据帧的每一列,并将“未知”值转换为NA。我尝试了以下代码:
for (i in seq(length(df))) {
for (j in seq(nrow(df))) {
ifelse(df[,i][j] == "unknown", NA, df[,i][j])
}
}
但是,它没有更改任何值。我尝试更改的列是因素,因此我也尝试过:
for (i in seq(length(df))) {
x <- class(df[,i])
as.character(df[,i])
for (j in seq(nrow(df))) {
ifelse(df[,i][j] == "unknown", NA, df[,i][j])
}
class(df[,i]) <- x
}
无济于事。没有错误,代码似乎可以正常运行。只有值保持为“未知”。
答案 0 :(得分:2)
我们可以尝试:
df[df == "unknown"] = NA
这假定您所有列都是字符而不是要素。
答案 1 :(得分:2)
运行ifelse不会更改其任何参数的值。您可能需要将结果分配回df
列。而且逐行执行没有任何意义,因为ifelse被设计用于矢量,所以它可能是:
for (i in seq(length(df))) {
df[,i] <- ifelse(df[,i] == "unknown", NA, df[,i] )
}
}
鉴于@TimBiegeleisen所展示的更有效的策略,这仍然不是最佳选择,但至少您可以研究一下以了解如何增进对使用for
-循环和{{1} }使用R。