我有一个数据框 df ,如下所示
name position
1 HLA 1:1-15
2 HLA 1:2-16
3 HLA 1:3-17
我想根据“:”字符将位置列分成两列,这样我得到
name seq position
1 HLA 1 1-15
2 HLA 1 2-16
3 HLA 1 3-17
所以我认为这可以解决问题,
df <- transform(df,pos = as.character(position))
df_split<- strsplit(df$pos, split=":")
#found this hack from an old mailing list post
df <- transform(df, seq_name= sapply(df_split, "[[", 1),pos2= sapply(df_split, "[[", 2))
但是我收到一个错误
Error in strsplit(df$pos, split = ":") : non-character argument
有什么问题?你如何在 R 中实现这一点。我在这里简化了我的案例,实际上数据框运行到超过十万行。