【问题标题】:how to solve: the condition has length > 1 and only the first element will be used in R? [duplicate]如何解决:条件的长度> 1,并且只有第一个元素会在R中使用? [复制]
【发布时间】:2018-04-01 08:57:54
【问题描述】:

这是我正在尝试使用的功能:

x=10
y=10
mysample= function(n)
{
  z = runif(n,0,20)
  {
     if(x < z)
    {
      t = z
    } else 
    {
      t = x
    }
     data.frame(x,t)
  }
}

但是当我尝试时:

A <- mysample(50)

它会出现警告消息:

条件的长度 > 1 并且只使用第一个元素

我该如何解决这个问题?

【问题讨论】:

  • 欢迎来到 SO!如果您指定警告消息是什么,将会有所帮助。

标签: r


【解决方案1】:

if 应该只取一个 TRUE/FALSE,而您要求它检查 n

x < z
 [1]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE
[20] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE
[39] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE

我想你想要

set.seed(357)
z <- runif(50, min = 0, max = 20)
ifelse(x < z, z, x)

 [1] 10.00000 10.00000 10.00000 10.00000 13.06970 10.00000 18.67473 14.94917 15.56799 19.82682 12.49106 10.49149 10.00000
[14] 10.00000 11.79600 10.00000 10.00000 17.90611 13.66297 10.00000 10.00000 10.00000 10.00000 10.00000 14.15444 13.77288
[27] 10.00000 10.00000 10.32776 19.53836 10.00000 18.57790 10.00000 10.00000 11.40069 16.16679 13.86975 10.00000 16.86793
[40] 15.74069 10.00000 10.00000 12.99440 10.00000 10.00000 10.00000 10.44369 18.70916 10.00000 10.00000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    相关资源
    最近更新 更多