首页 > 解决方案 > 如何使用基于用户输入的函数创建数据框?

问题描述

我正在尝试根据用户提供的输入创建数据框。用户将决定要包含在数据框中的变量数量。

下面我提供了我所追求的代码。我想做的是创建一个执行相同任务的函数。

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

标签: r

解决方案


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

推荐阅读