gpt4 book ai didi

r - 如何一次替换多个值

转载 作者:行者123 更新时间:2023-12-04 10:14:13 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Multiple replacement in R

(3 个回答)



Dictionary style replace multiple items

(10 个回答)


3年前关闭。




我想一次用特定的其他值替换向量中的不同值。

在我正在解决的问题中:

  • 1 应替换为 2,
  • 2 与 4,
  • 3 与 6,
  • 4 同 8,
  • 5 同 1,
  • 6 与 3,
  • 7 与 5 和
  • 8 与 7。

  • 以便:
    x <- c(4, 2, 0, 7, 5, 7, 8, 9)
    x
    [1] 4 2 0 7 5 7 8 9

    将转换为:
    [1] 8 4 0 5 1 5 7 9

    更换后。

    我试过使用:
    x[x == 1] <- 2
    x[x == 2] <- 4

    依此类推,但这会导致 1 被 7 替换。

    在不使用任何包的情况下解决此问题的最简单方法是什么?

    最佳答案

    一个可能的解决方案:

    old <- 1:8
    new <- c(2,4,6,8,1,3,5,7)

    x[x %in% old] <- new[match(x, old, nomatch = 0)]

    这使:

    > x
    [1] 8 4 0 5 1 5 7 9


    这是做什么的:
  • 创建两个向量:old与需要替换的值和 new与相应的替换。
  • 使用 match查看来自 x 的值的位置发生在 old .使用 nomatch = 0删除 NA的。这导致 old 中位置的索引向量为 x
  • 然后可以使用该索引向量来索引 new .
  • 仅分配来自 new 的值到 x 的位置存在于 old 中:x[x %in% old]
  • 关于r - 如何一次替换多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50898623/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com