[英]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_list2matrix
的stringi
。
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.