Это дополнительный вопрос, связанный с моим предыдущим постом .Ниже приведена более объяснительная версия «что я хочу сделать», а не «как заставить этот метод работать».
Ниже приведен код, который создает «основную» базу данных, из которой я извлекаю элементы для дальнейшего использования в других функциях.Я регулярно извлекаю элементы данных, основываясь на значении идентификационного номера группы.
- Цель: я хотел бы иметь возможность "обернуть" спецификации, которые меняются (например, имя выходного кадра данных и выбранные группы), в функцию, которую можно вызывать.
##### generating data for example
set.seed(271828)
n.elements <- c(10,10,12,14,16,18)
group.number <- rep(1001:1006, n.elements)
element.id <- c(
seq(1,n.elements[1], 1),
seq(1,n.elements[2], 1),
seq(1,n.elements[3], 1),
seq(1,n.elements[4], 1),
seq(1,n.elements[5], 1),
seq(1,n.elements[6], 1) )
x1 <- round(rnorm(length(group.number),45, 12), digits=0)
x2 <- round(rbeta(length(group.number),2,4), digits = 2)
data.base <- as.data.frame(cbind(group.number, element.id, x1, x2))
data.base
##### data.base is representative of the large database
##### suppose I need to pull a set together made up of groups:
##### 1003, 1004, and 1001
groups.set.1 <- as.data.frame(c(1003, 1004, 1001))
bank.names <- c("group.number")
colnames(groups.set.1) <- bank.names
set.sort <- matrix(seq(1,nrow(groups.set.1),1))
sort.set.1 <- cbind(groups.set.1, set.sort)
set.1 <- as.data.frame(merge(sort.set.1, data.base,
by="group.number", all.x=TRUE))
##### this is how the dataset needs to be ordered for further use
set.1 <- set.1[order(set.1$set.sort, set.1$element.id ), ]
row.names(set.1) <- seq(nrow(set.1))
РЕДАКТИРОВАТЬ: Предположим, я хотел выполнить ту же задачу, чтобы получить set.2
, где set.2
состоит из групп: 1005, 1006и 1002. Я мог бы просто скопировать приведенный выше код и внести соответствующие изменения.Тем не менее, я хотел бы знать, возможно ли указать функцию, чтобы я мог передать ей необходимые изменения и получить желаемый выходной кадр данных.Возможно, имея функцию с именем group.extract
, где я мог бы указать что-то вроде следующего:
groups.2 <- c(1005, 1006, 1002)
group.extract(set.2, groups.2)
На основании предоставленных комментариев кажется, что список - это путь, и функция должна вызыватьсписок, где элементы списка могут различаться.