簡體   English   中英

將長字符串列表拆分為逗號分隔的向量,然后轉換為 df 行

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM