【发布时间】:2014-01-06 16:40:52
【问题描述】:
如果我要导入到 R 中的数据看起来像这样
kljflksdjfklsdjfsdfj
dfjkdsjfkdjfkldjfkjd
djfkdsjfkdjfjsdfjsdk
dsjfkjsdfkdjsfkjdskj
我想以这样一种方式阅读它们,即我从中得到一个矩阵,每个符号是一列(第一列是 k、d、d、d),每一行是一行(4 行在我的情况下)。我该怎么做?
【问题讨论】:
标签: r read.table
如果我要导入到 R 中的数据看起来像这样
kljflksdjfklsdjfsdfj
dfjkdsjfkdjfkldjfkjd
djfkdsjfkdjfjsdfjsdk
dsjfkjsdfkdjsfkjdskj
我想以这样一种方式阅读它们,即我从中得到一个矩阵,每个符号是一列(第一列是 k、d、d、d),每一行是一行(4 行在我的情况下)。我该怎么做?
【问题讨论】:
标签: r read.table
您可以使用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"
【讨论】:
您也可以使用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。
【讨论】: