R语言无需加载第三方库 使用if语句新增条件判断列newcol
实现方法
你可以选择以下两种仅用基础R命令、无需加载任何第三方库的方式实现需求:
方式1:用向量化ifelse(推荐,效率更高)
# 构造示例数据 M <- data.frame(c("A","B","C",NA),c(5,100,NA,60)) names(M) <- c("Letter","Number") # 生成新列 M$newcol <- ifelse(is.na(M$Letter), TRUE, FALSE)
方式2:用基础if分支+循环
如果要求必须用单条件if语法实现,可以逐行判断:
# 先初始化新列 M$newcol <- logical(nrow(M)) # 逐行遍历判断 for (i in seq_len(nrow(M))) { if (is.na(M$Letter[i])) { M$newcol[i] <- TRUE } else { M$newcol[i] <- FALSE } }
注意事项
- 不要用
M$Letter == NA的写法判断NA,R中任何值和NA做相等判断都会返回NA,无法得到正确的逻辑结果,必须用is.na()函数做NA识别。 - 两种方式都符合要求,方式1是R中处理向量条件判断的常规写法,运行效率远高于逐行循环,更推荐使用。
运行最终得到的M数据框结果如下:
| Letter | Number | newcol |
|---|---|---|
| A | 5 | FALSE |
| B | 100 | FALSE |
| C | NA | FALSE |
| 60 | TRUE |
内容的提问来源于stack exchange,提问作者maddie
相关产品推荐
相关产品推荐

