r - 为什么 cSplit 返回 TRUE 而不是字符

标签 r split

我有这个(简化的)数据集:

x <- read.table(text  = '  id                                                 seq
1  1 AACCAAGCCCTTGCTCAAATCGAAAAAAAGTTGAGCAAACCGAGTTTTGAG
2  2 AAGTTGAGCAAACCGAGTTTTGAGACTTGGATGAAGTCAACCAAAGCCCAC')

看起来像这样:

  id                                                 seq
1  1 AACCAAGCCCTTGCTCAAATCGAAAAAAAGTTGAGCAAACCGAGTTTTGAG
2  2 AAGTTGAGCAAACCGAGTTTTGAGACTTGGATGAAGTCAACCAAAGCCCAC

当我将其置于 cSplit 中时: cSplit(x, 'seq', Direction = 'wide', stripWhite = FALSE, sep = '') 对于位置 20 和 32,它返回 TRUE 而不是字符本身:

   id seq_01 seq_02 seq_03 seq_04 seq_05 seq_06 seq_07 seq_08 seq_09 seq_10 seq_11 seq_12 seq_13 seq_14 seq_15 seq_16 seq_17 seq_18
1:  1      A      A      C      C      A      A      G      C      C      C      T      T      G      C      T      C      A      A
2:  2      A      A      G      T      T      G      A      G      C      A      A      A      C      C      G      A      G      T
   seq_19 seq_20 seq_21 seq_22 seq_23 seq_24 seq_25 seq_26 seq_27 seq_28 seq_29 seq_30 seq_31 seq_32 seq_33 seq_34 seq_35 seq_36
1:      A   TRUE      C      G      A      A      A      A      A      A      A      G      T   TRUE      G      A      G      C
2:      T   TRUE      T      G      A      G      A      C      T      T      G      G      A   TRUE      G      A      A      G
   seq_37 seq_38 seq_39 seq_40 seq_41 seq_42 seq_43 seq_44 seq_45 seq_46 seq_47 seq_48 seq_49 seq_50 seq_51
1:      A      A      A      C      C      G      A      G      T      T      T      T      G      A      G
2:      T      C      A      A      C      C      A      A      A      G      C      C      C      A      C

(如果我将 direction = 'wide' 更改为 direction = 'long' 并使用 tidyr::spread 自行传播看起来不错)

最佳答案

问题出在 type.convert 上,默认情况下为 TRUE。因此,如果列中只有 TF,它会认为是 TRUE/FALSE 而不是字符串“T”或“F” "并将其转换为逻辑类型

library(splitstackshape)
cSplit(x, 'seq', direction = 'wide', stripWhite = FALSE,
     sep = '', type.convert = FALSE)
# id seq_01 seq_02 seq_03 seq_04 seq_05 seq_06 seq_07 seq_08 seq_09 seq_10 seq_11 seq_12 seq_13 seq_14 seq_15
#1:  1      A      A      C      C      A      A      G      C      C      C      T      T      G      C      T
#2:  2      A      A      G      T      T      G      A      G      C      A      A      A      C      C      G
#   seq_16 seq_17 seq_18 seq_19 seq_20 seq_21 seq_22 seq_23 seq_24 seq_25 seq_26 seq_27 seq_28 seq_29 seq_30
#1:      C      A      A      A      T      C      G      A      A      A      A      A      A      A      G
#2:      A      G      T      T      T      T      G      A      G      A      C      T      T      G      G
#   seq_31 seq_32 seq_33 seq_34 seq_35 seq_36 seq_37 seq_38 seq_39 seq_40 seq_41 seq_42 seq_43 seq_44 seq_45
#1:      T      T      G      A      G      C      A      A      A      C      C      G      A      G      T
#2:      A      T      G      A      A      G      T      C      A      A      C      C      A      A      A
#   seq_46 seq_47 seq_48 seq_49 seq_50 seq_51
#1:      T      T      T      G      A      G
#2:      G      C      C      C      A      C

关于r - 为什么 cSplit 返回 TRUE 而不是字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56027432/

相关文章:

R插入符包: data partition into training/test sets before trainControl?

r - 使用 getSymbols() 最快和/或更好的方法是什么?将每个股权分开还是全部合并?

jquery - 如何使用带有 2 个参数的 jQuery Split?

python - 将字符串拆分为一个列表,项目长度相等

java - 将 arraylist 拆分为单独的数组,其中包含导入数据中的各个元素

python - 拆分字符串而不删除 python 中的定界符

r - 无法在 RStudio 中更改 R 的版本

r - 将数据框中的因子转换为数字

javascript - 使用正则表达式在 javascript 中拆分字符串?

r - 以编程方式将 Access (.mdb) 文件读入 R for Windows 和 Mac