У меня есть такой фрейм данных:
set.seed(10040)
my_data <- data.frame(X.1 = c(188.1,188.2,188.3),
ID_1A = runif(3, 13, 15),
ID_1B = runif(3, 13, 15),
ID_1C = runif(3, 13, 15),
X.2 = c(188.1,188.2,188.3),
ID_2A = runif(3, 13, 15),
ID_2B = runif(3, 13, 15),
ID_2C = runif(3, 13, 15),
X.3 = c(188.1,188.2,188.3),
ID_3A = runif(3, 13, 15),
ID_3B = runif(3, 13, 15),
ID_3C = runif(3, 13, 15))
С гораздо большим количеством строк и столбцов.Используя функции gather
и rbind
, я хотел бы создать функцию, которая автоматически изменяет структуру фрейма данных, чтобы получить всю информацию в каждом необработанном виде.В конце концов, каждые 4 столбца мне нужно использовать gather
для изменения формы данных, а затем связать все строки из этих «подкадров».
Пока у меня есть это:
my_function <- function(data, col_min, col_max){
output <- data[,c(col_min:col_max)] %>%
as.data.frame() %>%
gather(treatment,intensite,substring(colnames(df[col_min+1]), 1, 7):substring(colnames(df[col_max]), 1, 7)) %>%
`colnames<-`(c('X','ID','value'))
return(rbind(output))
}
Я могу запустить функцию без проблем для первого субкадра:
clean <- my_function(data = my_data, col_min = 1, col_max = 4)
Но я не могу найти способ добавить другие субкадры.
Я пытался запустить эти:
clean <- my_function(data = my_data,
col_min = seq(from = 1, to = 49, by = 4),
col_max = seq(from = 5, to = 52, by = 4))
и
for(i in seq(from = 1, to = 49, by = 4)){
output = my_funtion(data = my_data,
col_min = i,
col_max = i+3)
clean = rbind(output)
}
Но я получаю сообщения об ошибках, потому что rbind
не нравится множественные значения для col_min
и col_max
.
Есть кое-что, чего мне не хватает здесь, и я предполагаю, что ответ в семье apply
за то, чтобы заставить rbind
работать, но я не нашел этого.