如何在R语言中对数据集逐行循环使用if else语句完成条件赋值
错误原因
if判断条件未指定当前循环行的下标,直接使用了完整的RawData$users列向量。R处理标量逻辑判断时只会提取向量的第一个元素计算,因此整列的赋值结果完全由第一行的users数值决定,才会出现全0的输出。
修复方案
方案1:修改原有for循环逻辑
仅需要在判断条件中加入行下标i即可:
for(i in 1:nrow(RawData)){ RawData[i, 5] <- if(RawData$users[i] <= 150) { 1 } else { 0 } } head(RawData)
方案2:使用R向量化操作(更推荐)
R原生支持向量化运算,不需要手动写循环即可完成整列判断,运算效率远高于for循环,尤其适合大数据集:
# 逻辑值TRUE/FALSE转为整数时自动对应1/0,直接赋值到第5列即可 RawData[, 5] <- as.integer(RawData$users <= 150) head(RawData)
额外校验建议
如果修改代码后输出仍不符合预期,可先运行table(RawData$users <= 150)查看判断结果的分布,确认是否存在原始数据中所有users值均大于150的情况。
内容的提问来源于stack exchange,提问作者arhomberg
相关产品推荐
相关产品推荐

