You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言的for循环中对DataFrame执行if判断

R语言使用for循环统计分组满足条件的次数

1. 先构造对应的数据框

把你提供的简化数据转换成R的DataFrame格式:

df <- data.frame(
  tag = c(1273, 1273, 1273, 1275, 1275, 1278, 1278),
  dist = c(1002, 3212, 1252, 2152, 232, 582, 752)
)

2. 提取唯一的tag值

先拿到所有不重复的tag,确保每个tag只被统计一次:

unique_tags <- unique(df$tag)

3. 初始化结果存储容器

创建一个整数向量,长度和唯一tag的数量一致,用来存每个tag对应的统计次数,同时给向量命名方便对应:

amount <- integer(length(unique_tags))
names(amount) <- unique_tags

4. 编写for循环完成统计

R的for循环逻辑和Python类似,这里用seq_along()遍历索引(等价于Python的range(len())),循环内完成筛选和计数:

for (i in seq_along(unique_tags)) {
  # 筛选当前tag对应的所有dist值
  current_dist <- df$dist[df$tag == unique_tags[i]]
  # R中逻辑值TRUE/FALSE会被自动转为1/0,sum求和就是满足条件的次数
  amount[i] <- sum(current_dist > 1000)
}

5. 输出指定格式的结果

用cat()函数按照你需要的格式打印结果:

cat("tag:  ", paste(unique_tags, collapse = "  "), "\n\n")
cat("amount:   ", paste(amount, collapse = "  "), "\n")

运行后会得到你要的输出:

tag:   1273  1275  1278 

amount:    3  1  0 

额外补充(非必须)

R更推荐向量化操作,处理50k行数据时效率更高,比如用aggregate()一行完成统计:

aggregate(dist ~ tag, data = df, FUN = function(x) sum(x > 1000))

但如果你明确需要用for循环,上面的循环写法逻辑清晰,和Python循环思路一致,容易上手。

内容的提问来源于stack exchange,提问作者SanderOhm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:42:23