数据框中是否有 select N 个随机列的 R 函数?
Is there an R function to select N random columns from the dataframe?
是否有 select 来自数据帧的 N 个随机列的 R 函数?我正在尝试检查用于贝叶斯网络结构学习的 Sparsebn 包的时间复杂度
我试过了,但是算法 select 不仅有 N 列,还有 N 行。如何解决?
library(sparsebn)
library(igraph)
library(graph)
df <- read.csv("data/arth150.csv", header = TRUE, sep = ",", check.names = FALSE)
df <- as.data.frame(unclass(df), stringsAsFactors = TRUE)
experiment_range <- list(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 106)
timelist <- list()
for (i in experiment_range) {
rand_df <- df[sample(ncol(df), size=i), ]
start_time <- Sys.time()
dat <- sparsebnData(rand_df, type = 'c')
dags <- estimate.dag(data = dat)
end_time <- Sys.time()
ctime <- end_time - start_time
otime <- list(ctime)
timelist <- append(timelist, otime)
}
如果 df
是数据框,您可以通过这样做随机采样 i
列:
df[,sample(1:ncol(df),i)]
或使用dplyr
:
dplyr::select(df, sample(seq_len(ncol(df)), size = i))
在管道中:
df %>% dplyr::select(sample(seq_len(ncol(.)), size = i))
是否有 select 来自数据帧的 N 个随机列的 R 函数?我正在尝试检查用于贝叶斯网络结构学习的 Sparsebn 包的时间复杂度
我试过了,但是算法 select 不仅有 N 列,还有 N 行。如何解决?
library(sparsebn)
library(igraph)
library(graph)
df <- read.csv("data/arth150.csv", header = TRUE, sep = ",", check.names = FALSE)
df <- as.data.frame(unclass(df), stringsAsFactors = TRUE)
experiment_range <- list(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 106)
timelist <- list()
for (i in experiment_range) {
rand_df <- df[sample(ncol(df), size=i), ]
start_time <- Sys.time()
dat <- sparsebnData(rand_df, type = 'c')
dags <- estimate.dag(data = dat)
end_time <- Sys.time()
ctime <- end_time - start_time
otime <- list(ctime)
timelist <- append(timelist, otime)
}
如果 df
是数据框,您可以通过这样做随机采样 i
列:
df[,sample(1:ncol(df),i)]
或使用dplyr
:
dplyr::select(df, sample(seq_len(ncol(df)), size = i))
在管道中:
df %>% dplyr::select(sample(seq_len(ncol(.)), size = i))