【问题标题】:Capping each member in an r array限制 r 数组中的每个成员
【发布时间】:2015-01-30 03:26:22
【问题描述】:

我是 R 新手,我有损失数据:

losses=c(25,250,5,17,2,195,12,8,75,5,50,1);

如何将列表中的每个成员限制为 150?即如何为列表中的每个成员执行min(150,x)

然后我想将所有损失限制在“保险金额”数组中:

aoi=c(150,250,100,125,300,200,80,250,100,350,500,120) 

【问题讨论】:

  • 那么我想将所有损失限制在“保险金额” aoi=c(150,250,100,125,300,200,80,250,100,350,500,120) 数组中。谢谢。
  • 即损失[损失 >= 150]
  • 感谢 Alex 提供的链接

标签: arrays r vector limit


【解决方案1】:

参见?pmin,或并行最小值计算:

pmin(150,losses)
#[1]  25 150   5  17   2 150  12   8  75   5  50   1

如果您需要多次执行此操作,最好将变量收集到 data.framelist 中。例如:

dat <- data.frame(losses,aoi)
data.frame(Map(pmin,dat,150))

#   losses aoi
#1      25 150
#2     150 150
#3       5 100
#etc...

【讨论】:

  • 我似乎总是对 pmin 和 pmax 感到困惑。 pmin 用于设置最大值,pmax 用于设置最小值。
  • @BondedDust - OP 对他们想要做的事情的描述实际上是对pmin 的简洁定义 - “对列表中的每个成员执行 min(150,x)? i>" - 可以直接转移到sapply(losses, function(x) min(150,x) )
  • 我并不是说这个问题让我感到困惑,只是当我在键盘上时我想......现在我需要设置一个“最大值”。
  • 精湛,以最少的麻烦和麻烦完全满足需要。
猜你喜欢
  • 1970-01-01
  • 2022-07-27
  • 2022-11-22
  • 1970-01-01
  • 2010-11-16
  • 2015-09-12
  • 2020-04-24
  • 2011-01-27
  • 1970-01-01
相关资源
最近更新 更多