R语言自定义函数提取ID时print()正常但return()不生效问题求助
问题原因
return()函数的触发规则是一旦执行就会立刻终止当前函数运行,你的第二段代码在循环中第一次碰到PCA==1的行时就会执行return返回当前ID,函数直接结束,自然拿不到全部符合条件的ID。而print()只是逐行打印内容,不会中断循环,所以能输出所有结果。
修复方案
方案1:修改原循环逻辑
提前初始化空向量存储所有符合条件的ID,等循环全部执行完毕后再统一返回:
retrievePCA<-function(data) { # 初始化空向量存储ID id_vec <- c() for (i in 1:nrow(data)) { if (data$PCA[i] == 1) { id_vec <- c(id_vec, data$CPSIDP[i]) } } return(id_vec) } vector <- retrievePCA(data)
方案2:使用R向量化操作(更高效)
R原生支持逻辑索引,无需写循环即可快速提取符合条件的数值,代码更简洁、处理大数据时效率远高于手写for循环:
# 直接提取PCA为1对应的CPSIDP列值 vector <- data$CPSIDP[data$PCA == 1]
内容的提问来源于stack exchange,提问作者statisticsing
相关产品推荐
相关产品推荐

