首页 > 解决方案 > 如何切换数据框中的两行(随机或专门选择)?

问题描述

晚上好,

我想从数据框(“data_example”)中切换两个随机选择的行。

set.seed(16) #for reproducible random generation
data_example<- data.frame(id=1:number, x =runif(number, max = xmax), y = runif(number, max = ymax))
swap <- [sample(nrow(data_example),2),]

这样我会收到两个随机选择的行,但我在如何下注交换它们方面失败了。有人可以帮忙吗?

提前非常感谢和亲切的问候!

标签: r

解决方案


尝试这个:

swap2 <- function(x) {
  x <- max(x)
  while (length(table(ind <- sort(sample(x, size = 2)))) < 2) 1
  replace(seq_len(x), ind, rev(ind))
}
dat <- data.frame(id = seq_len(10), x = 0)
dat
#    id x
# 1   1 0
# 2   2 0
# 3   3 0
# 4   4 0
# 5   5 0
# 6   6 0
# 7   7 0
# 8   8 0
# 9   9 0
# 10 10 0
set.seed(42)
dat[swap2(nrow(dat)),]
#    id x
# 5   5 0  # <---
# 2   2 0
# 3   3 0
# 4   4 0
# 1   1 0  # <---
# 6   6 0
# 7   7 0
# 8   8 0
# 9   9 0
# 10 10 0

推荐阅读