在R中如何将数值替换为文本?新手替换0/1后数据集未更新求助
错误原因
- 核心问题出在
attach()的使用逻辑:attach(data)仅会将data数据框的列加入R的搜索路径,允许你直接通过列名访问对应的值,但你直接对Eaten变量赋值时,实际是在全局工作环境创建了一个全新的独立向量,完全没有修改原data数据框内的Eaten列,所以原数据集不会发生变化。 - 额外提示:日常数据处理不推荐使用
attach(),很容易引发变量名冲突、修改不生效的问题,新手应尽量避免使用该函数。 - 你的判断逻辑本身没有问题,列是integer类型也不会影响
==0/==1的判断结果。
正确实现方式
不需要使用attach(),直接对原数据框的对应列赋值即可:
data$Eaten <- ifelse(data$Eaten == 0, "Not_Eaten", "Eaten")
运行后查看data$Eaten即可看到修改后的结果。
如果习惯使用tidyverse语法,也可以用以下写法:
library(dplyr) data <- data %>% mutate(Eaten = ifelse(Eaten == 0, "Not_Eaten", "Eaten"))
内容的提问来源于stack exchange,提问作者Rhedavetester
相关产品推荐
相关产品推荐

