带ifelse()的双for循环在R中工作不正常
我试图遍历数据帧的每一列,并将“未知”值转换为NAs。我尝试了以下代码:带ifelse()的双for循环在R中工作不正常,r,for-loop,if-statement,na,class-factory,R,For Loop,If Statement,Na,Class Factory,我试图遍历数据帧的每一列,并将“未知”值转换为NAs。我尝试了以下代码: 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.characte
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
}
for(i在seq(长度(df))中){
我们可以试试:
df[df == "unknown"] = NA
这假设您的所有列都是字符而不是因子。我们可以尝试:
df[df == "unknown"] = NA
这假设您的所有列都是字符,而不是因子。运行ifelse不会更改其任何参数的值。您需要将结果分配回df
的列。按行执行没有任何意义,因为ifelse设计用于向量,因此它可能是:
for (i in seq(length(df))) {
df[,i] <- ifelse(df[,i] == "unknown", NA, df[,i] )
}
}
for(i在seq(长度(df))中){
df[,i]运行ifelse不会更改其任何参数的值。您需要将结果赋回到df
的列中。按行执行没有任何意义,因为ifelse设计用于向量,因此它可能是:
for (i in seq(length(df))) {
df[,i] <- ifelse(df[,i] == "unknown", NA, df[,i] )
}
}
for(i在seq(长度(df))中){
df[,i]您可以在将数据读取到R时处理此问题;请检查read.table
中的na.strings
参数。if-else与if和else不同。您可以在将数据读取到R时处理此问题;请检查read.table
中的na.strings
参数。if-else与if和else不同。