Уважаемый, у меня есть вопрос, как можно сделать в 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 меньше, чем число столбцов в кадре данных, очевидно
Далее функция, которая называется 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]]
, чтобы извлекать только массив.