我是r语言的新手,我想阅读以下输入内容,但不知道如何进行操作:
m n
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
我想将以下输入内容分为6类
m
n
c(1,5,9,13)
c(2,6,10,14)
c(3,7,11,15)
c(4,8,12,16)
我尝试了以下代码,但似乎不起作用
f <- file("stdin")
r <- file("stdin")
data1 = scan(file = r,skip = 1)
data1 <- split(data1, " ")
data2 = scan(file = f ,nlines =1)
data2 <- split(data2, " ")
o1 = data2[1]
o2 = data2[2]
似乎总是给
"Read 0 items"
data2
。
答案 0 :(得分:3)
使用read.table
两次,最后在“注释”中给出Lines
。
mn <- read.table(text = Lines, nrows = 1, as.is = TRUE)
DF <- read.table(text = Lines, skip = 1)
给予:
mn
## V1 V2
## 1 m n
mn[[1]]
## [1] "m"
mn$V1 # same
## [1] "m"
DF
## V1 V2 V3 V4
## 1 1 2 3 4
## 2 5 6 7 8
## 3 9 10 11 12
## 4 13 14 15 16
DF[[1]]
## [1] 1 5 9 13
DF$V1 # same
## [1] 1 5 9 13
由6个组成部分组成的列表为:
unname( c(mn, DF) )
## [[1]]
## [1] "m"
##
## [[2]]
## [1] "n"
##
## [[3]]
## [1] 1 5 9 13
##
## [[4]]
## [1] 2 6 10 14
##
## [[5]]
## [1] 3 7 11 15
##
## [[6]]
## [1] 4 8 12 16
如果像问题中一样使用scan
,则假定除了第一行外,所有行都具有相同数量的字段,请获取字段计数(每行一个),然后计数使用扫描使用这些数字:
counts <- count.fields(textConnection(Lines))
c( scan(text = Lines, what = "", nmax = counts[1], quiet = TRUE),
scan(text = Lines, what = as.list(numeric(counts[2])), skip = 1, quiet = TRUE) )
## [[1]]
## [1] "m"
##
## [[2]]
## [1] "n"
##
## [[3]]
## [1] 1 5 9 13
##
## [[4]]
## [1] 2 6 10 14
##
## [[5]]
## [1] 3 7 11 15
##
## [[6]]
## [1] 4 8 12 16
假设输入为:
Lines <- "m n
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16"