gpt4 book ai didi

r - data.frame 中列顺序的约束随机化

转载 作者:行者123 更新时间:2023-12-01 12:57:23 25 4
gpt4 key购买 nike

我正在尝试复制数据框中的每一列并将其移动到 1-3 列内的随机位置点,并对数据框中的每一列执行此操作。我希望列至少向左或向右移动一个空格。当然,sample(data) 会随机对列进行重新排序,但我将其放入循环中的尝试非常糟糕(我承认我跳过了大部分线性代数类(class),该死的......)。下面是一个示例数据:

dat <- read.table(textConnection(
"-515.5718 94.33423 939.6324 -502.9918 -75.14629 946.6926
-515.2283 96.10239 939.5687 -503.1425 -73.39015 946.6360
-515.0044 97.68119 939.4177 -503.4021 -71.79252 946.6909
-514.7430 99.59141 939.3976 -503.6645 -70.08514 946.6887
-514.4449 101.08511 939.2342 -503.9207 -68.48133 946.7183
-514.2769 102.29453 939.0013 -504.2665 -67.04509 946.7809
-513.9294 104.02753 938.9436 -504.4703 -65.34361 946.7899
-513.5900 105.49624 938.7684 -504.7405 -63.75965 946.7991"
),header=F,as.is=T)
sample(dat)#random columns position

最佳答案

这个蛮力但速度很快的解决方案怎么样?

它尝试对列进行不同的排列,直到找到每列向左或向右移动至少 1 且不超过 3 列的排列。当它找到这样的排列时,while() 调用最后一行的测试结果为 FALSE,终止循环并保留变量 x 包含可接受的排列。

n <- ncol(dat)
while({x <- sample(n) # Proposed new column positions
y <- seq_len(n) # Original column positions
max(abs(x - y)) > 3 | min(abs(x - y)) == 0
}) NULL
dat[x]

关于r - data.frame 中列顺序的约束随机化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8991776/

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