簡體   English   中英

將字符串向量拆分為包含相應字符的列的數據框

[英]Splitting a vector of strings to a dataframe with columns containing the respective characters

作為這個問題的變體

我有一個帶字符串的向量,每個字符串有2到4個字符。

Strng <- c("XDX",  "GUV",  "FQ",   "ACUE", "HIT",  "AYX",  "NFD",  "AHBW", "GKQ",  "PYF")

我想將其拆分為具有4列的數據框,其中每列包含一個字符或0(對於字符串的長度小於tan 4的情況)。 零可以在前面 - 無關緊要。

所以(可能)在應用之后:

ss<-strsplit(Strng,"")
z<-lapply(ss,as.character)

我想有一個像這樣的數據幀:

>df  
"X" "D" "X" "0"  
"G" "U" "V" "0"  
"F" "Q" "0" "0"   
"A" "C" "U" "E" 
"H" "I" "T" "0"  
"A" "Y" "X" "0"  
"N" "F" "D" "0"  
"A" "H" "B" "W" 
"G" "K" "Q" "0"  
"P" "Y" "F" "0"

有任何想法嗎?

謝謝,

卡林

這是“data.table”的替代方案:

library(data.table)
setDT(tstrsplit(Strng, "", fill = "0"))[]
#     V1 V2 V3 V4
#  1:  X  D  X  0
#  2:  G  U  V  0
#  3:  F  Q  0  0
#  4:  A  C  U  E
#  5:  H  I  T  0
#  6:  A  Y  X  0
#  7:  N  F  D  0
#  8:  A  H  B  W
#  9:  G  K  Q  0
# 10:  P  Y  F  0

你也可以使用cSplit從我的“splitstackshape”包,但它與充滿NA ,並使用一點點奇怪的語法:

library(splitstackshape)
cSplit(data.table(Strng), "Strng", "", stripWhite = FALSE)

在將“Strng”拆分為list后,我們可以使用stri_list2matrixstringi

library(stringi)
stri_list2matrix(strsplit(Strng, ''), fill=0, byrow=TRUE)
#     [,1] [,2] [,3] [,4]
# [1,] "X"  "D"  "X"  "0" 
# [2,] "G"  "U"  "V"  "0" 
# [3,] "F"  "Q"  "0"  "0" 
# [4,] "A"  "C"  "U"  "E" 
# [5,] "H"  "I"  "T"  "0" 
# [6,] "A"  "Y"  "X"  "0" 
# [7,] "N"  "F"  "D"  "0" 
# [8,] "A"  "H"  "B"  "W" 
# [9,] "G"  "K"  "Q"  "0" 
#[10,] "P"  "Y"  "F"  "0" 

或者base R選項將是( 鏈接中描述的變體)

read.fwf(file= textConnection(Strng), 
             widths = rep(1,max(nchar(Strng))))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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