R 要替换的项目数不是替换长度/结果的倍数,但正确

标签 r for-loop warnings

我知道已经有一些关于这个的线索,但是通过那些我无法弄清楚问题可能是什么 - 请原谅我..

我正在尝试运行代码

  for (i in 1:a){
    matrix$new_column[i]<-which(matrix[i,1:b-1]==matrix$col_b[i])
  }

我正在尝试的是:
对于a行b列的矩阵,在每一行的第2到b-1列中,找到与b列中包含相同值的那个(总是有这样的值)并写出相应的列号进入 *new_column*

我的代码不断抛出错误

Warning in matrix$new_column[i] <- which(matrix[i, : number of items to replace is not a multiple of replacement length



然而,结果是完全正确的。我试过了
  • 首先创建用 0 填充的 *new_column*
  • 将结束索引从 a 更改为 a-1 或 a+1

  • 如上所述,结果是正确的,但是我觉得如果我做的一切正确,我不应该收到警告消息,所以我真的很感激关于如何解决这个问题的任何建议。

    最后,当我想从 2 转到 b-1 时,不要问我为什么选择 1:b-1,我只是看到当我使用 2:b-1 时,它实际上会从第 3 列开始..

    最佳答案

    which()如果有多个匹配项,则可以返回一个向量。例如:

    which((1:12)%%2 == 0) # which are even?
    

    matrix$col_b[i]独特的?结果可能看起来仍然正确。注意在这种情况下会发生什么:
    x <- 1:2
    x[1] <- 3:4
    x
    

    另外,1:b-1没有给你来自 1 的数字至 b - 1但来自 1 的号码至 b , 全减 1 :
    b <- 10
    1:b-1
    

    您首先需要括号来强制减法:1:(b - 1) .

    关于R 要替换的项目数不是替换长度/结果的倍数,但正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22099461/

    相关文章:

    python - python 是否像 perl 中那样有 "use strict;"和 "use warnings;"?

    r - 在多面州 map 上绘制县名称 (ggplot2)

    r - 根据最小值计算特定行

    R 下载并解压缩文件以存储在数据框中

    javascript - 在 JavaScript 中使用 for 循环创建一系列异步获取序列

    javascript - == 和 != 已经变成不好的做法了吗?

    r - 在 dplyr 的 mutate 中使用 switch 语句

    Java - 列表中的所有元素变得相同

    java - 在 :each 中动态转换托管项目

    java - Class<Collection> 上未经检查的警告