[英]Split long string list into comma delimited vector and then convert to a df row
我已经收集到这个问题有些常见,但我遇到了一些我似乎无法找到答案的障碍。
我有一个很长的字符串:
line1 = "GGCTTATTTAACGGGCAGATATACGCTGGGCAAATC..."
我希望它看起来像:
line1 = c("G", "G", "C", ...)
(顺便说一句,是否可以将上述字母作为整数 - 当我尝试使用 function as.integer 时,它会将其全部转换为 NA?)
我试过: strsplit(line1, "")
这会产生一个列表: 'G''G''C'...
为了解决这个问题,我尝试过: paste(line1, collapse = ", ")
哪种作品: c(\"G\", \"G\", \"C"...)
当我尝试使用gsub
删除“\”时,它并没有这样做,因为它突然将脚本中的所有内容都注册为引号。
此外,一旦完成,我想将其塑造成 dataframe 的一行或一列,如下所示:
[1] [2] [3] ...
[1] G G C
或者:
[1]
[1] G
[2] G
[3] C
拆分 unlist 结果后,将其转换为因子,然后转换为数字:
fac <- factor(unlist(strsplit(line1, "")))
as.numeric(fac)
## [1] 5 5 4 6 6 3 6 6 6 3 3 4 5 5 5 4 3 5 3 6 3 6 3 4 5 4 6 5 5 5 4 3 3 3 6 4 1 2 2 2
# this gives the correspondence between numbers and characters
# i.e. space is 1, dot is 2, A is 3, C is 4, G is 5 and T is 6
levels(fac)
## [1] " " "." "A" "C" "G" "T"
也可以使用levels= 参数显式指定级别,在这种情况下,其他字符将为NA,并且可以选择使用na.omit(...) 消除。
fac <- factor(unlist(strsplit(line1, "")), levels = c("A", "C", "G", "T"))
as.numeric(fac)
## [1] 3 3 2 4 4 1 4 4 4 1 1 2 3 3 3 2 1 3 1 4 1 4 1 2 3 2 4 3 3 3 2 1 1 1 4 2 NA NA NA NA
问题中的输入如下。 可能最后 4 个字符不打算成为数据的一部分,但如果是这样,那么它应该是这样写的,这样其他人就不必编辑它了。 无论如何,上面的代码应该可以工作。
line1 = "GGCTTATTTAACGGGCAGATATACGCTGGGCAAATC ..."
要将该列表转换为字符向量,您只需 go:
x <- strsplit(line1, "")
x <- x[[1]]
要使其成为 df 的列,您可以使用 go:
x <- as.data.frame(x)
或者直接从第一行开始:
x <- as.data.frame(strsplit(line1, ""))
这会给它一个丑陋的列 header 你可以用它来修复
names(x)[1] <- 'whatever'
或者直接在一次通话中再次:
x <- as.data.frame(strsplit(line1, ""), col.names = 'whatever')
该问题似乎要求 dput 的dput
但这很少需要。
x <- strsplit(line1, "")[[1]]
dput(x)
#c("G", "G", "C", "T", "T", "A", "T", "T", "T", "A", "A", "C",
#"G", "G", "G", "C", "A", "G", "A", "T", "A", "T", "A", "C", "G",
#"C", "T", "G", "G", "G", "C", "A", "A", "A", "T", "C")
至于如何从字符串中获取整数的问题,这里有一种方法。 output 是原始line1
字符串中字母的 ASCII 码。
charToRaw(line1)
# [1] 47 47 43 54 54 41 54 54 54 41 41 43 47 47 47 43 41 47 41 54 41 54 41
#[24] 43 47 43 54 47 47 47 43 41 41 41 54 43
数据
line1 <- "GGCTTATTTAACGGGCAGATATACGCTGGGCAAATC"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.