r - 如何使用基于用户输入的函数创建数据框?
问题描述
我正在尝试根据用户提供的输入创建数据框。用户将决定要包含在数据框中的变量数量。
下面我提供了我所追求的代码。我想做的是创建一个执行相同任务的函数。
var1 <- c(1:6)
var2 <- c(1:6)
var3 <- c(1:6)
var1 <- sample(var1, 10, replace = TRUE)
var2 <- sample(var2, 10, replace = TRUE)
var3 <- sample(var3, 10, replace = TRUE)
mydata <- data.frame(var1, var2, var3)
我期望下面的输出。
var1 var2 var3
1 4 1 3
2 2 5 1
3 5 6 2
4 4 5 2
5 5 3 3
6 5 5 2
7 1 3 6
8 3 5 5
9 2 4 1
10 5 5 5
解决方案
make_df <- function(n, x = 1:6, nrow = 10, var_prefix = 'var'){
out <- as.data.frame(matrix(sample(x, nrow*n, TRUE), nrow, n))
# or: out <- as.data.frame(replicate(n, sample(x, nrow, TRUE), simplify = F))
setNames(out, paste0(var_prefix, seq_along(out)))
}
make_df(5)
# var1 var2 var3 var4 var5
# 1 5 3 1 1 3
# 2 2 2 4 4 3
# 3 2 2 3 6 3
# 4 3 2 6 4 4
# 5 3 1 6 1 1
# 6 6 2 4 2 2
# 7 4 6 6 5 6
# 8 4 3 2 4 6
# 9 4 6 6 4 4
# 10 4 2 1 5 1
make_df(n = 5, x = 10:20, nrow = 4, var_prefix = 'col')
# col1 col2 col3 col4 col5
# 1 16 13 16 10 11
# 2 17 10 12 12 16
# 3 16 11 10 11 15
# 4 15 14 13 14 11