1.ifelse语句返回值的特殊性
正常的ifelse语句格式为ifelse(判断条件,TRUE时执行,FALSE时执行)
学过编程语言的人不难理解,但在R中容易被误导。今天我遇到了一个情况。需求是判断一个字符向量的长度,如果大于0,返回向量所有内容,否则输出"没有"两个字。结果却只输出了1个元素。
代码如下:
> ##可以看出向量有值 > ls_1 [1] "天津" "上海" "安徽" "福建" "四川" "重庆" "陕西" "青海" "新疆" > ##向量内有9个元素 > length(ls_1) [1] 9 > ##进行判断 > ifelse(length(ls_1),ls_1,"没有") [1] "天津" > ##结果只显示了第一个元素,后来得知,判断条件有几个元素,就会返回ls_1向量的几个元素 > ##如果我想每次都全部现实,可以这样写 > ifelse(is.na(ls_1),"没有",ls_1) [1] "天津" "上海" "安徽" "福建" "四川" "重庆" "陕西" "青海" "新疆"
总结:R语言的if判断语句,虽然大部分情况都是和其他编程语言一样使用,但在返回内容包含多个值时,需要注意返回结果是否正确。