使用R拆分并连接列中的字符串

使用R拆分并连接列中的字符串,r,matrix,string-split,R,Matrix,String Split,我有一个带有列名的矩阵[34,11]: row.names X33 X40 X46 X50 X60 X80 X90 X100 X130 X200 INTERGENIC-chrI-188881-G-C 0.37 0.41 0.48 0.45 0.47 0.42 0.45 0.44 0.40 0.36 0.36 0.33 0.39 INTERGENIC-chrI-188939-A-G 0.38 0.48 0.56

我有一个带有列名的矩阵[34,11]:

row.names X33 X40 X46 X50 X60 X80 X90 X100 X130 X200
INTERGENIC-chrI-188881-G-C  0.37    0.41    0.48    0.45    0.47    0.42    0.45    0.44    0.40    0.36    0.36    0.33    0.39
INTERGENIC-chrI-188939-A-G  0.38    0.48    0.56    0.54    0.57    0.45    0.57    0.51    0.49    0.47    0.41    0.38    0.52
INTERGENIC-chrXIII-191990-A-T   0.14    0.15    0.15    0.22    0.16    0.16    0.15    0.31    0.11    0.23    0.12    0.12    0.19
SDS3-chrIX-202625-T-G   0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.33    0.35    0.41    0.50    0.53
INTERGENIC-chrVIII-236987-G-A   0.15    0.34    0.28    0.28    0.22    0.12    0.15    0.25    0.27    0.24    0.13    0.13    0.25
INTERGENIC-chrVIII-236993-T-A   0.12    0.25    0.21    0.19    0.17    0.00    0.00    0.18    0.16    0.17    0.08    0.11    0.12
第一列
行。名称需要拆分为单独的列:

row.names X33 X40 X46 X50 X60 X80 X90 X100 X130 X200 
我目前正在使用R来获得所需的输出

GENE, CHROMOSOME, POSITION, REF, ALT (INTERGENIC-chrI-188881-G-C)
library(重塑2)
A试试这个:

library(reshape2)    
A <- colsplit(df$row.names, "\\-", names=c("GENE", "CHROMOSOME", "POSITION", "REF", "ALT"))
#虚拟数据

你试过strsplit吗?是的。但对我来说,这只是头球。我是个十足的新手。如何将其作为一个整体用于矩阵。你能给我一个命令吗。谢谢你的数据形式不太清楚。你能用几行代码和其他人容易复制的形式更新你的问题吗?我建议你使用它。@AnandaMahto看起来像基因型数据,行是
VariantID
,列是
sampleid
。上面的代码适用于你提供的样本数据。你的
temp_df
看起来怎么样?我做得对吗?df您使用
colsplit
提供的解决方案有效,只需将
cbind
转换为原始
df
。使用colsplit和cbind,我在数据中得到一个错误。frame(…,check.names=FALSE):参数意味着不同的行数:0,34很难判断失败的位置,如果您可以从文件中提供更多行,会有帮助吗?
#dummy data
df <- read.table(text="
Variants    33  40  46  50  60  80  90  100 130 200
ASG1-chrIX-103160-C-T   0   0   0   0   0   0.83    0.49    0   0   0
YNL179C-chrXIV-300948-T-A   0.27    0.32    0.24    0.25    0.23    0.22    0.17    0.16    0.2 0.3
",header=TRUE)

#split columns
temp_df <- 
  do.call(rbind,
          strsplit(as.character(df$Variants),split="-"))
colnames(temp_df) <- c("GENE", "CHROMOSOME", "POSITION", "REF", "ALT")

#result
cbind(temp_df,df[,-1])

# GENE CHROMOSOME POSITION REF ALT  X33  X40  X46  X50  X60  X80  X90 X100 X130 X200
# 1    ASG1      chrIX   103160   C   T 0.00 0.00 0.00 0.00 0.00 0.83 0.49 0.00  0.0  0.0
# 2 YNL179C     chrXIV   300948   T   A 0.27 0.32 0.24 0.25 0.23 0.22 0.17 0.16  0.2  0.3
#using reshape2
library(reshape2)
A <- colsplit(df$Variants, "\\-", names=c("GENE", "CHROMOSOME", "POSITION", "REF", "ALT"))

#result
cbind(A,df[,-1])