【问题标题】:Assigning variable value according to ifelse()根据 ifelse() 分配变量值
【发布时间】:2021-08-08 14:02:29
【问题描述】:

我正在尝试为我想要向下采样数据的函数分配一个值。 该函数应以块的形式迭代数据集,但如果迭代器k(此处未显示)遍历整个数据集,该函数应返回一个随机块。

问题在于,当尝试通过检查索引并分配随机值来进行区分时,ifelse() 语句返回的值是单个整数。

n = c(1:972) #indices of negative class
chunkSize = 98
start = 1
stop = -97
n = ifelse(stop < 0,
           n[sample( n, chunkSize)],
           n[start:stop]
)

长度(n) [1] 1 n [1] 261

n = n[sample( n, chunkSize)] 行没有ifelse() 也能正常工作

> length(n)
[1] 98
> n
 [1] 698 129  85 683 563 598 366 876 965 569 900  54 141 734  33  96 736 311 685 202 663 597
[23] 795 625 763 961 624 352 162 753 524 693 229 173 544 493 477 526 367 716 525 732 198 211
[45] 675 413 708 745 669 715 267 639 519 730  18 588 850  99   4 691 560 682 807 566 568 304
[67]  69 798 474 747 684 117 704 258 410 618 381 281 429 399 824 244  31 558 253 135 326 328
[89] 452 228 608  38 216 156 773 446 827 528

我猜这与 ifelse() 有关,但我是 R 的初学者,到现在我已经花了很多时间试图解决这个问题。

有人能指出导致这种行为的原因或提出替代解决方案吗?

非常感谢!

【问题讨论】:

    标签: r if-statement indexing


    【解决方案1】:

    如果您要检查单个值,请使用 if/else 而不是 ifelseifelse 用于向量。

    n = c(1:972) 
    chunkSize = 98
    start = 1
    stop = -97
    n = if(stop < 0) n[sample( n, chunkSize)] else n[start:stop]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多