У меня есть foo_dataframe
(см. Ниже), который я хочу преобразовать в данные транзакции:
foo_dataframe <- data.frame(replicate(50,1:4))
foo_dataframe
# X1 X2 X3 X4 X5 X6 X7 X8 X9...................X50
#1 1 1 1 1 1 1 1 1 1
#2 2 2 2 2 2 2 2 2 2
#3 3 3 3 3 3 3 3 3 3
#4 4 4 4 4 4 4 4 4 4
Ожидаемые данные транзакции находятся ниже (т.е. данные транзакции должны быть конкатенацией столбца имя и каждое значение фрейма данных):
# X1 X2 X3 X4 ................X50
#1 X1 1 X2 1 X3 1 X4 1 X50 1
#2 X1 2 X2 2 X3 2 X4 2 X50 2
#3 X1 3 X2 3 X3 3 X4 3 X50 3
#4 X1 4 X2 4 X3 4 X4 4 X50 4
Я могу объединить каждый столбец и его значения с помощью этого кода:
m <- paste(colnames(foo_dataframe)[1], foo_dataframe[[1]], "")
n <- paste(colnames(foo_dataframe)[2], foo_dataframe[[2]], "")
o <- paste(colnames(foo_dataframe)[3], foo_dataframe[[3]], "")
p <- paste(colnames(foo_dataframe)[4], foo_dataframe[[4]], "")
И позже соединить их, используя data.frame(m,n,o,p)
, чтобы получить:
# X1 X2 X3 X4
#1 X1 1 X2 1 X3 1 X4 1
#2 X1 2 X2 2 X3 2 X4 2
#3 X1 3 X2 3 X3 3 X4 3
#4 X1 4 X2 4 X3 4 X4 4
Чтобы сэкономить время, я думаю, что это можно сделать динамически с помощью функций применения, поскольку у меня есть много столбцов, которые нужно сделать. Тем не менее, когда я попытался применить функцию, с кодом ниже:
c <- 1:length(length(colnames(foo_dataframe)))
t <- foo_dataframe
transactionData <- function(t, c){ # t = dataframe; c = column no.
paste(colnames(t)[c], t[[c]], "")
}
foo_transactionData <- lapply(t, transactionData, c)
я получил следующую ошибку:
Error in t[[c]] : attempt to select more than one element in vectorIndex
Я трудоемкий стекопоток, чтобы найти решение, но не нашел ни одного , Любая помощь будет оценена. Спасибо.