Dataframe 警告消息:1:R中的列未知或未初始化
我有一个像这样的Dataframe 警告消息:1:R中的列未知或未初始化,dataframe,r,data-manipulation,Dataframe,R,Data Manipulation,我有一个像这样的 AID=c("9671608","9671618","9677162") dep=c(23,45,12) t8=c(1,0,2) a1_sum=c(2,10,1) dataall=data.frame(AID,dep,t8,a1_sum) > dataall AID dep t8 a1_sum 1 9671608 23 1 2 2 9671618 45 0 10 3 9677162 12 2 1 我在第二行
AID=c("9671608","9671618","9677162")
dep=c(23,45,12)
t8=c(1,0,2)
a1_sum=c(2,10,1)
dataall=data.frame(AID,dep,t8,a1_sum)
> dataall
AID dep t8 a1_sum
1 9671608 23 1 2
2 9671618 45 0 10
3 9677162 12 2 1
我在第二行修改了a1_sum
的值,如下所示:
dataall$a1_sum[dataall$AID=="9671618"]=1
我成功地做到了这一点,但我收到了以下警告消息,即使在我运行与此数据相关的其他不同代码时也是如此,如下所示:
警告信息:
1:未知或未初始化的列:“a1_sum”
原因可能是什么
谢谢。我建议如下: EDIT:正如@r2evans正确地指出的,当只有一种情况时,最好使用
if\u else
而不是case\u:
library(dplyr)
dataall <- dataall %>% dplyr::mutate(a1_sum = dplyr::if_else(AID == "9671618", 1, a1_sum)
al\u sum
与al\u sum
不同。检查你的代码,看看你在哪里输入了小写的l
而不是数字1
@r2evans-这段代码有一个棘手的地方,那就是dataall$AID==“9671618”
被用来子集向量,dataall$a1_sum[]
,而不是数据帧。废话,你说得对。。。阅读不完整。(看起来仍然像是打字错误引起的问题。)@LenGreski谢谢你的评论。这个代码实际上是一个可复制的代码,我开发它来演示我的实际问题。似乎没有你提到的打字错误。此外,我认为这个问题可能是由于我对数据进行子集划分的方式造成的。除了我的方法之外,还有更有效的方法吗?在执行dataall$a1_sum[dataall$AID==“9671618”]=1
之前,您是否确实设置了列a1_sum
?这有时可能会导致问题,因为我看不出你的代码有任何问题。当有一个条件时,我强烈建议if\u else
而不是case\u When
,因为它应该快得多。我认为当测试数量增加时,case\u当
胜出,类似于多个嵌套的if\u else
调用。
library(data.table)
dataall <- data.table::setDT(dataall)
dataall[AID =="9671618", a1_sum := 1]