R语言:在DataFrame中用带if条件的while循环生成4_cyl向量
在R中用while循环筛选气缸数为4的行名
嘿,这就给你搞定这个需求!咱们要做的就是用while循环逐行检查DataFrame的cylinders列,把数值恰好为4的行名提取出来,存到名为4_cyl的向量里。
实现步骤与代码
首先假设你的DataFrame名称是df(如果实际名字不一样,直接替换成你的DataFrame名就行):
# 先初始化必要的变量 df <- your_dataframe_name # 替换成你实际的DataFrame total_rows <- nrow(df) # 获取DataFrame的总行数 current_row <- 1 # 初始化循环的起始索引 4_cyl <- c() # 创建空向量,用来存放符合条件的行名 # 执行while循环筛选 while(current_row <= total_rows) { # 判断当前行的cylinders是否等于4 if(df$cylinders[current_row] == 4) { # 如果符合条件,把该行的行名追加到4_cyl向量中 4_cyl <- c(4_cyl, rownames(df)[current_row]) } # 索引自增,保证循环能遍历每一行,避免死循环 current_row <- current_row + 1 }
代码解释
- 第一步先初始化变量:
total_rows用来确定循环的边界,current_row作为遍历每一行的索引,4_cyl是用来存储结果的空向量。 while循环的条件是current_row不超过总行数,这样就能覆盖DataFrame的每一行。- 循环内部用
if语句判断当前行的cylinders值是否等于4,若满足条件,就通过rownames(df)[current_row]获取该行的行名,追加到4_cyl里。 - 每次循环结束后一定要让
current_row加1,不然会一直停在第一行,陷入死循环哦!
小补充
其实在R里,向量化操作会更高效简洁,比如一行代码就能搞定:4_cyl <- rownames(df)[df$cylinders == 4],但既然你明确要求用while循环配合if来实现,上面的代码就完全符合你的需求啦~
内容的提问来源于stack exchange,提问作者Paramita Chatterjee
相关产品推荐
相关产品推荐

