Создайте n переменных внутри функции, учитывая, что n; в R

Уважаемый, у меня есть вопрос, как можно сделать в R, чтобы функции было присвоено число n, что она генерировала бы внутри n переменных и чтобы она возвращала некоторые вычисления с ними? вещь, я думаю, что у меня есть база данных и с определенным фильтром или именами этого, я генерирую эти n переменных, потому что у меня есть сомнения, если это возможно, потому что я не могу думать ни о каком другом пути, кроме как через рекурсивный процесс (как в python при работе со слиянием или типичный пример вычисления факториала); Любая общая идея или код, пожалуйста.

пример:

function_n <- function(n,datos){
       x1<-datos$columna_1
       x2<-datos$columna_2
         .
         .
         .
       xn<-datos$columna_n
       lista<-list(x1,x2,...,xn)
       return(lista)
}

Я хочу сгенерировать что-то такого стиля, где n - это число столбцов, с которыми я хочу работать, а data - это мой фрейм данных, для которого я хочу выбрать эти столбцы, и это работает для любое n меньше, чем число столбцов в кадре данных, очевидно

1
задан 25.11.2019, 23:41
1 ответ

Далее функция, которая называется function_n (n, d), где "n" - количество колонн, которое ud будет извлекать из основания "d", эти колонны идут выбирать случайной формы без замены внутри всех колонн "d".

function_n <- function(n,d){

  if(n <= 0 | n > ncol(d)){
    cat("")
    stop("n debe ser mayor a cero o menor o igual a la cantidad de columnas de la base")
  }else{
    v<-sample(1:ncol(d),n, replace = FALSE)

    m<- matrix(nrow = nrow(d), ncol = n)

    for (i in 1:length(v)) {

      vv<-v[i]  
      m[,i] <-d[,vv]
    }

    lista<-list(m)
    return(c(v,lista))
  }


}

a=matrix(sample(1:100),nrow = 10, ncol = 10)
function_n(3,a)

будучи "a"

> a
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]   28   26   61   78  100   62   11   16   15    43
 [2,]   13   84   65    6   81   92   88   96    2    95
 [3,]   32   40   34    9   41   83   82   69   93    53
 [4,]   79   30   14   75   58   85   70    4   47    52
 [5,]   71   31   67   97   33   44   51   12   55    87
 [6,]   37   46    1   48   18   10   20   27   59    23
 [7,]    5   64   56   17   77   29   60   99   63    50
 [8,]   68    8   76   49   35   57   94   25   19    54
 [9,]   98   80   21   36   89   42   66   91    3    73
[10,]   45    7   39   22   86   24   72   74   38    90

будет возвращать Тебе колонны, которые были выбраны, и массив.

[[1]]
[1] 5

[[2]]
[1] 9

[[3]]
[1] 1

[[4]]
      [,1] [,2] [,3]
 [1,]  100   15   28
 [2,]   81    2   13
 [3,]   41   93   32
 [4,]   58   47   79
 [5,]   33   55   71
 [6,]   18   59   37
 [7,]   77   63    5
 [8,]   35   19   68
 [9,]   89    3   98
[10,]   86   38   45

и было бы достаточно делать

function_n(3,a)[[4]] 

, чтобы извлекать только массив.

1
ответ дан 01.12.2019, 10:53
  • 1
    Уже, bacá n, я quedó ясное добро с этим примером, большое спасибо!!! – Vicho Dániel 30.11.2019, 01:48

Теги

Похожие вопросы