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

R语言中逐行取最小值计算数据框新列z的实现问题

解决逐行计算x乘以y和1的较小值的问题

你遇到的问题很典型——min()函数是取整个向量的全局最小值,所以min(df$y, 1)会先把整个df$y列的最小值(也就是0.1)和1比较,最终得到0.1,导致所有行的x都乘了同一个数。

要实现逐行分别取y和1的较小值,你需要用R里的向量化函数pmin(),它会对两个向量的对应元素逐一比较,返回每个位置的最小值。

正确代码:

df <- data.frame(x = c(3, 5, 4, 4, 3, 2), y = c(.9, .8, 1, 1.2, .5, .1))
df$z <- df$x * pmin(df$y, 1)

运行结果:

执行后df会变成:

x    y    z
1 3 0.90 2.70
2 5 0.80 4.00
3 4 1.00 4.00
4 4 1.20 4.00
5 3 0.50 1.50
6 2 0.10 0.20

如果你想用另一种方式(比如条件判断),也可以用ifelse()实现,不过pmin()更简洁高效:

df$z <- df$x * ifelse(df$y < 1, df$y, 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:05:04