无法在r中找到功能

时间:2015-04-11 19:58:17

标签: r function loops sum repeat

我有一个元素'measure'有5个值,比如10 20 30 40 50,我试图得到每个值的其他4个值的总和。因此,如果所选值为20,那么总和将为10 + 30 + 40 + 50 = 130.我使用'repeat'循环执行此操作,'n'表示在这种情况下为5的值,且总数为度量的所有5个值的总和为150。

`i <- 1
repeat
{
  sum <- total - measure(i);
  print(sum);
  if (i > n)
    break;
}`

我遇到错误“无法找到功能测量”。

3 个答案:

答案 0 :(得分:3)

您可以使用:

dat <- seq(10, 50, 10)
res <- rep(sum(dat), length(dat)) # 5 times 150 = 10 + 20 + 30 + 40 + 50
res <- res - dat # (140 = 150 - 10, 130 = 150 - 20, ..., 100 = 150 - 50) 

甚至更快使用 R 在内部重复rep(为此技巧归功于akrun)

sum(dat) - dat
#[1] 140 130 120 110 100

答案 1 :(得分:1)

尝试

 v1 <- seq(10,50, by=10)
 sapply(seq_along(v1), function(i) sum(v1[-i]))
 #[1] 140 130 120 110 100

答案 2 :(得分:1)

建议使用apply系列函数而不是for循环,以提高可读性(根据问题,速度非常微小)。只是做:

x = seq(10,50,10)

sapply(x, function(u) sum(x[x!=u]))
#[1] 140 130 120 110 100