两列的R功能比较

R functional comparison of two columns


你好

我最近遇到了一个有趣的问题,我必须执行以下操作>

假设我们有两个整数值列。对于第一列中的每个值,我必须检查该值是否与第二列中同一索引处的值不同,如果是,则将第一列中的值加 1。

我用 for 循环解决了这个问题,在这个循环中我遍历了索引并相应地添加了值,但由于这是 R,我希望有更多 R 风格的方法来解决这个问题。我在想>

sapply(column1, function(x) ifelse(x != column2, x+1, x))

当然,这还行不通。这样可以吗?

这似乎有效:

df <- data.frame(a = c(1,2,3,4,5), b = c(1,3,3,4,4)) df$a <- ifelse(df$a != df$b, df$a+1, df$a)

示例数据在 table 中看起来像这样: a b 1 1 1 2 2 3 3 3 3 4 4 4 5 5 4

在 运行 上面的代码之后它看起来像这样: a b 1 1 1 2 3 3 3 3 3 4 4 4 5 6 4

您可以像这样使用逻辑子集:

set.seed(123)
x <- sample(1:100, 25)
y <- sample(1:100, 25)


x[3] <- 10
y[3] <- 10

x.orig <- x
x[x != y] <- x[x != y] +1

cbind(y, x.orig, x)

#      y x.orig  x
# [1,] 71     29 30
# [2,] 54     79 80
# [3,] 10     10 10
# [4,] 29     86 87
# [5,] 15     91 92
# [6,] 92      5  6
# [7,] 85     50 51
# [8,] 65     83 84
# [9,] 74     51 52
# [10,]  3     42 43
# [11,] 44     87 88
# [12,] 68     98 99
# [13,] 20     60 61
# [14,] 28     94 95
# [15,] 88      9 10
# [16,] 13     77 78
# [17,] 35     21 22
# [18,] 84      4  5
# [19,] 31     27 28
# [20,] 94     78 79
# [21,] 12     72 73
# [22,] 19     55 56
# [23,] 37     90 91
# [24,] 21     85 86
# [25,] 66     81 82