У меня есть этот простой код, который создает матрицу и фрейм данных:
mat=matrix(rnorm(40*5), ncol=5)
df=as.data.frame(mat)
df2 <- tidyr::gather(df, "x", "y", V1:V5)
Вот голова (df), созданная матом:
V1 V2 V3 V4 V5
1 0.97111725 0.12937942 -0.89643594 -0.30144874 0.10405400
2 0.68372321 -0.08049954 -0.52891953 -0.56752185 -1.04425728
3 1.04553733 0.24499356 0.25919424 -1.51280159 0.70952009
4 0.16433896 -0.46727565 -0.22030923 1.18732203 0.17529333
5 -1.73732058 0.04977374 1.54042252 -1.27585563 -1.05846972
6 0.35953274 3.09224985 -1.24524965 -0.67492542 -0.68065365
Затем я создаю еще один фрейм данных df2
, где собираю значения в два столбца x
и y
.
df2 <- tidyr::gather(df, "x", "y", V1:V5)
Когда я получаю новые наборы данных, в которых матрица имеет другое количество столбцов, я должен изменить значение столбцов df2
на другое число.
Пример : здесь я использую V5
, потому что у меня 5 столбцов: df2 <- tidyr::gather(df, "x", "y", V1:V5)
, так что теперь Если я получу новую матрицу с 40 столбцами, мне придется вручную изменить ее на V20
: df2 <- tidyr::gather(df, "x", "y", V1:V20)
.
Есть ли способ написать это так: df2 <- tidyr::gather(df, "x", "y", V1:V+ncol(mat)