我有以下data.frame
:
structure(list(chr = c("1A", "1A", "1A", "1A", "1A", "1A"), locus =
c("1145442",
"1158042", "1158055", "1229616", "1236254", "1238114"), `ES1-5` =
c(0.0261333333333333,
0.0928666666666667, 0.0490166666666667, 0.0499666666666667,
0.0758333333333333,
0.0514666666666667), `ES6-13` = c(0.0323333333333333, 0.0387666666666667,
0.0118166666666667, 0.000466666666666671, 0.0800333333333333,
0.0120666666666667), `ES14-26` = c(0.0702333333333333, 0.0755666666666667,
-0.0157833333333333, -0.0187333333333333, 0.123633333333333,
-0.0207333333333333), `ES27-38` = c(-0.132766666666667, -0.120033333333333,
0.000516666666666665, 0.00836666666666666, -0.112766666666667,
0.00126666666666667), `SA1-13` = c(-0.00586666666666669,
-0.0511333333333333,
-0.0313833333333333, -0.0294333333333333, -0.0138666666666667,
-0.0297333333333333), `SA14-25` = c(0.00993333333333335,
-0.0360333333333333,
-0.0141833333333333, -0.0106333333333333, -0.152866666666667,
-0.0143333333333333)), row.names = c(NA, 6L), class = "data.frame")
看起来像这样:
chr locus ES1-5 ES6-13 ES14-26 ES27-38 SA1-13 SA14-25
1A 1145442 0.02613333 0.0323333333 0.07023333 -0.1327666667 -0.005866667 0.009933333
1A 1158042 0.09286667 0.0387666667 0.07556667 -0.1200333333 -0.051133333 -0.036033333
1A 1158055 0.04901667 0.0118166667 -0.01578333 0.0005166667 -0.031383333 -0.014183333
1A 1229616 0.04996667 0.0004666667 -0.01873333 0.0083666667 -0.029433333 -0.010633333
1A 1236254 0.07583333 0.0800333333 0.12363333 -0.1127666667 -0.013866667 -0.152866667
1A 1238114 0.05146667 0.0120666667 -0.02073333 0.0012666667 -0.029733333 -0.014333333
我想将列名colnames[3:8]
'ES1-5''ES6-13''ES14-26''ES27-38''SA1-13''SA14-25'转换为由字符向量colnames[3:8]
的字符差引起的各个级别。我已经尝试过将data.frame
换位以将字符向量放入单个列中,但是df$chr
df$locus
列的排列顺序不再正确。
有人可以帮我解决这个问题吗?我的最终目标是在使用点阵封装进行绘制时对这一因素的水平进行分组。请注意,由于colnames[3:8]
中每一列的值都是数字,所以我不希望它们成为级别,而希望保持数字。