我想根据下一栏中的数据替换列中的一些标签。我在SO上找到了几种方法,但它们没有用。
基本上如果“plot”是11,我希望“trt”列读取“SC”(现在它读取S2或C2)。
我试过
cn[cn$plot == 11, "trt"]="SC"
cn$trt[cn$plot == "11"]<-"SC"
但是我得到了
Warning message:
In `[<-.factor`(`*tmp*`, cn$plot == 11, value = c(NA, NA, NA, NA, :
invalid factor level, NA generated
表示第一个和
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = c("SC", "SC", "SC", "SC", :
invalid factor level, NA generated
第二个。
我已尝试过11 as.factor
和as.numeric
。
答案 0 :(得分:1)
这基本上意味着您正在尝试在level
变量(本例中为factor
中的一列)中data.frame
分配level
as.character
不存在。
最简单的解决方案是在factor
向量上使用A <- factor(c("A", "B", "C", "D"))
B <- as.character(A)
A
# [1] A B C D
# Levels: A B C D
B
# [1] "A" "B" "C" "D"
A[A == "C"] <- "E"
# Warning message:
# In `[<-.factor`(`*tmp*`, A == "C", value = "E") :
# invalid factor level, NA generated
A <- factor(c("A", "B", "C", "D"))
levels(A)[which(levels(A) == "C")] <- "E"
A
# [1] A B E D
# Levels: A B E D
B[B == "C"] <- "E"
B
# [1] "A" "B" "E" "D"
。
这是一个简单的例子:
{{1}}