[英]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.