【问题标题】:Randomly populate R dataframe with integers between用整数随机填充 R 数据帧
【发布时间】:2025-11-23 02:30:01
【问题描述】:

我想创建一个不重复的随机整数 R 数据帧。

我想出了这种可行的方法:

rank_random<-data.frame(matrix(NA, nrow = 13, ncol = 30)
for (colIdx in seq(1:30) {
rank_random[colIdx,] <-sample(1:ncol(subset(exc_ret, select=-c(Date))), 30, 
replace=F) 
}

【问题讨论】:

  • 我们看不到有关exc_retDate 的任何信息。开始一个新的 R 会话并尝试运行您的代码将是您的一个好习惯。然后,当您的问题中的代码中缺少名称时,您会收到一条错误消息。 (它也会在第一行中发现缺少的括号。您还应该知道,由矩阵对象组成的数据帧的行为可能会有所不同
  • 哎呀,对不起,你是对的。更改名称并复制而不检查。

标签: r dataframe random


【解决方案1】:

我假设您的意思是每行都没有重复。如果你的意思是别的,请澄清。

你的例子:

N= ncol(subset(exc_ret, select=-c(Date)))
num.rows = 30
t(sapply( seq(num.rows), 
          FUN=function(x){sample(1:N, num.rows, replace=F)} ))

为了更简单的情况对其进行测试

N= 5
num.rows = 5
t(sapply( seq(num.rows), 
          FUN=function(x){sample(1:N, num.rows, replace=F)} ))

#      [,1] [,2] [,3] [,4] [,5]
# [1,]    2    4    5    1    3
# [2,]    2    5    1    3    4
# [3,]    5    1    4    3    2
# [4,]    3    4    5    2    1
# [5,]    3    2    5    1    4

【讨论】:

  • 你实际上可以使用replicate,(包装到sapply):t(replicate(num.rows, sample(1:N, num.rows, replace=F)))