代码之家  ›  专栏  ›  技术社区  ›  spleen

用data.frame中的数字替换非<NA>

  •  1
  • spleen  · 技术社区  · 11 年前

    我在理解我所犯错误的逻辑方面遇到了一些问题。

    我需要用数字1替换数据帧中的非NA。

    我在向量-a-上测试了简单的代码:

    a<-c("a","a","a", NA,"a")
    a[!is.na(a)]<-1
    

    它奏效了。

    但我需要的是在data.frame上应用相同的过程,使用:

    data<-read.table ("dataframe.csv", header = T, sep = ",",na.strings= c(" ","") )
    

    但当我运行之前编写的相同代码时

    data$column1[!is.na(data$column1)]<-1
    

    R返回:

    警告消息:

    In `[<-.factor`(`*tmp*`, !is.na(data$column1), value = c(NA_integer_,  :
      invalid factor level, NA generated
    

    有人知道问题可能在哪里吗?

    1 回复  |  直到 11 年前
        1
  •  2
  •   spleen    11 年前

    最后,我能够使用本论坛主题中解释的替换功能来完成

    data<-replace(data.frame(lapply(data, as.character), stringsAsFactors = FALSE),
        !is.na(data), "1")