从 R 中的同一行赋值

assign values from same row in R

我只想在A = 1 时将B 的行值分配给A 行。这是我目前所做的:

数据框:

df <- data.frame('A' = c(1,1,2,5,4,3,1,2), 'B' = c(100,200,200,200,100,200,100,200))


        A     B
    1   1     100
    2   1     200
    3   2     200
    4   5     200
    5   4     100
    6   3     200
    7   1     100
    8   2     200

输出:

df$A[df$A == 1] <- df$B

        A     B
    1   100   100
    2   200   200
    3   2     200
    4   5     200
    5   4     100
    6   3     200
    7   200   100
    8   2     200

如您所见,第 1 行和第 2 行执行了它们应该执行的操作。但是,第 7 行没有,而是从第 3 行获取值 - 它按顺序分配值。

我的问题:如何分配从同一行获取输入的值?

使用:

df$A[df$A == 1] <- df$B[df$A == 1]

您需要对要替换的列和包含替换项的列应用相同的索引。