У меня есть данные, подобные этим:Как создать таблицу данных путем объединения программно названных векторов?
number_of_runs <- 4
r1 <- c(1,2,3)
r2 <- c(4,5,6)
r3 <- c(7,8,9)
r4 <- c(10,11,12)
Я регулярно имеют разное число прогонов (сохраненных в виде трех чисел в векторе имени r1 для первого запуска, r2 для второго запуска и т.д.). Я хотел бы объединить эти векторы в data.table
, но поскольку количество пробегов варьируется, мне нужно сделать это программно.
Ниже отлично работает для заданного числа прогонов выводя dt
точно так, как мне это нужно:
dt <- data.table(r1,r2,r3,r4)
мне нужно что-то похожее на это ниже, но это на самом деле работает:
dt <- data.table(c(paste0("r", 1:number_of_runs)))
Таким образом, если есть 3 прогона, он выведет таблицу данных, например data.table(r1,r2,r3)
, и если будет 4 прогона, она выведет таблицу данных, например data.table(r1,r2,r3,r4)
и так далее.
Я использую data.table
версию 1.10.4 на компьютере с Windows 7. Я ценю ваши идеи по этому поводу.
Откуда взялись векторы 4 'r *'? Построение разных переменных со связанной информацией - не лучший способ сделать что-то. Вероятно, это должно быть в списке, который упрощает работу. Но проблема, с которой вы сталкиваетесь, заключается в том, что вы не можете заменить символы (вещи без кавычек) символьными значениями (это то, что возвращает 'paste0()'). – MrFlick
@MrFlick Я не привязан к использованию векторов для 4 'r *'. Как бы вы предложили создать 4 'r *' в списке для решения этой проблемы? Благодарю. – FG7
Ну, как вы их создали в первую очередь? Вы выполняли функцию 4 раза? Возможно, что-то вроде 'r <- replicate (4, roll())'. Или просто используя эти значения буквально, 'r <- list (c (1,2,3), c (4,5,6), c (7,8,9), c (10,11,12))' , Затем вы можете получить их с помощью 'r [[1]]', 'r [[2]]' и т. Д. И можете использовать 'do.call (" data.table ", r)', но только в данных. Таблица. – MrFlick