将非<na>替换为data.frame </na>中的数字

时间:2014-02-19 15:53:36

标签: r replace dataframe na

我有一些问题需要理解我所犯错误的逻辑。

我需要用数字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 个答案:

答案 0 :(得分:1)

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

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