如何使用基于用户输入的功能创建数据框?

时间:2019-08-15 20:29:04

标签: 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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

module.exports { //or export default {

build: {
    publicPath: '/',
    vendor: ['axios','firebase', "jquery", 'popper', "bootstrap", 'bootbox'],
    extractCSS: true,
    babel: {
      presets: [
        'es2015',
        'stage-0'
      ],
      plugins: [

        [
          "transform-runtime",
          {
           "polyfill":true,
           "regenerator":true
          },
          "~/plugins/firebase.js",

          new webpack.ProvidePlugin({
            jQuery: 'jquery',
            $: 'jquery',
            jquery: 'jquery'
          })
        ],

      ]

    },
    // adding the below object made the compilation time go up again to 
    //"normal" 
    loaders:  {
      vue: {
        prettify: false
      }
    },
    /*
    ** You can extend webpack config here
    */
    extend(config, ctx) {
      config.devtool = ctx.isClient ? 'eval-source-map' : 'inline-source-map'

    }
  }

}