R 用字符串替换单个特定NA值

R 用字符串替换单个特定NA值,r,dataframe,replace,R,Dataframe,Replace,我想用字符串替换第22907行第1列。该栏由多个因素组成。数据帧中的列1称为geneID。我尝试了以下方法: df[22907,1] == 'CDEF' 但这导致了以下错误: 警告信息: 在[中,我们将列转换为字符,然后进行赋值 df[[1]] <- as.character(df[[1]]) df[22907,1] <- 'CDEF' levels(df[[1]]) <- c(levels(df[[1]]), 'CDEF') df[22907,1] <- 'CDEF

我想用字符串替换第22907行第1列。该栏由多个因素组成。数据帧中的列1称为geneID。我尝试了以下方法:

df[22907,1] == 'CDEF'
但这导致了以下错误:

警告信息:
[中,我们将列转换为
字符
,然后进行赋值

df[[1]] <- as.character(df[[1]])
df[22907,1] <- 'CDEF'
levels(df[[1]]) <- c(levels(df[[1]]), 'CDEF')
df[22907,1] <- 'CDEF'
df[22907, 1]
#[1] CDEF
#Levels: A B C D E CDEF
数据
set.seed(24)

df您需要首先添加级别
'CDEF'
,然后您可以添加它-因素要求级别存在,然后才能分配。另外
=
不分配,请使用
=
或更好的
返回
NA
@user1381852,因为您之前已经分配了它。请从原始datasetI已尝试从新数据集中添加。尝试将其添加为返回的级别之一:
级别错误(df[[1]],“CDEF”):未使用的参数(“CDEF”)
@user1381852我用一个可复制的例子展示了它。这很好,因为meI在我写它的时候忘记将
==
更改为
不在那里。是的,当时我正在电话上写我的答案-无法看到你的答案发生了什么。我没有偷你的答案。
set.seed(24)
df <- data.frame(geneID = sample(LETTERS[1:5], 30000, replace = TRUE), 
            col2 = rnorm(30000))
df[22907, 1] <- NA
levels(df[,1]) <- c(levels(df[,1]), 'CDEF')
df[22907,1] <- 'CDEF'