将字符串读入表中

时间:2014-01-06 16:40:52

标签: r read.table

如果我要导入R的数据看起来像这样

kljflksdjfklsdjfsdfj
dfjkdsjfkdjfkldjfkjd
djfkdsjfkdjfjsdfjsdk
dsjfkjsdfkdjsfkjdskj

我希望以这样的方式阅读它们,我得到一个矩阵,每个符号都是一列(第一列是k,d,d,d),每个新行一行(4行)在我的情况下)。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

您可以使用scan来阅读文件:

text <- "kljflksdjfklsdjfsdfj
dfjkdsjfkdjfkldjfkjd
djfkdsjfkdjfjsdfjsdk
dsjfkjsdfkdjsfkjdskj"    

dat <- scan(textConnection(text), "")
# dat <- scan("file.name", "")

函数strsplit将字符串拆分为单个字符。 rbind用于创建矩阵:

do.call(rbind, strsplit(dat, ""))

结果:

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,] "k"  "l"  "j"  "f"  "l"  "k"  "s"  "d"  "j"  "f"   "k"   "l"   "s"   "d"   "j"   "f"   "s"   "d"   "f"   "j"  
[2,] "d"  "f"  "j"  "k"  "d"  "s"  "j"  "f"  "k"  "d"   "j"   "f"   "k"   "l"   "d"   "j"   "f"   "k"   "j"   "d"  
[3,] "d"  "j"  "f"  "k"  "d"  "s"  "j"  "f"  "k"  "d"   "j"   "f"   "j"   "s"   "d"   "f"   "j"   "s"   "d"   "k"  
[4,] "d"  "s"  "j"  "f"  "k"  "j"  "s"  "d"  "f"  "k"   "d"   "j"   "s"   "f"   "k"   "j"   "d"   "s"   "k"   "j"  

答案 1 :(得分:2)

您也可以使用read.fwf。当然,将“yourFileName”替换为实际文件的名称。

read.fwf(file="yourFileName", 
         widths = rep(1, nchar(readLines("yourFileName", n=1))))
#   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
# 1  k  l  j  f  l  k  s  d  j   f   k   l   s   d   j   f   s   d   f   j
# 2  d  f  j  k  d  s  j  f  k   d   j   f   k   l   d   j   f   k   j   d
# 3  d  j  f  k  d  s  j  f  k   d   j   f   j   s   d   f   j   s   d   k
# 4  d  s  j  f  k  j  s  d  f   k   d   j   s   f   k   j   d   s   k   j

此处的输出为data.frame