※ 引述《spiderway (spiderway)》之铭言:
: [问题类型]:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
: [软件熟悉度]:
: 使用者(已经有用R 大概半年)
: [问题叙述]:
: 有些基本的问题想很久都解决不了,恳请各位大大协助指导
: 1.
: e.g.,我有一个长度不一的txt
: 1 2 3 4 5 6 7 8 9 10
: 2 3 3 3 6 7 8
: 1 3 4 5 6
: 我用下列方法变成一个list,但是假如txt档的量很大,像我只会一个一个打,有什么
: 办法可以处理
: x <- readLines("dat.txt")
: list(x[1],x[2],x[3])
不知道你是不是要这个:
(x <- as.list(readLines(textConnection("1 2 3 4 5 6 7 8 9 10
2 3 3 3 6 7 8
1 3 4 5 6"))))
# [[1]]
# [1] "1 2 3 4 5 6 7 8 9 10"
#
# [[2]]
# [1] "2 3 3 3 6 7 8"
#
# [[3]]
# [1] "1 3 4 5 6"
: 2. 这个问题是我主要想问的,根据上面那个list我想要搜寻出有query=c(3,3,3)的那一个
: index,就上面来看就是第二个,我换个方式表达像是假如我把上面那个变成table,我想要
: 搜寻某三行符合是query的index,像我目前是直接开档案用ctrl+f一个一个比非常花时间
: X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
: 1 1 2 3 4 5 6 7 8 9 10
: 2 2 3* 3* 3* 6 7 8 NA NA NA
: 3 1 3 4 5 6 NA NA NA NA NA
: 以上是我两个问题,谢谢
library(zoo)
x2 <- lapply(x, function(y) as.integer(strsplit(y, "\\s")[[1]]))
query = c(3,3,3)
sapply(x2, function(y){
any(rollapply(y, 3, function(v) all(v == query)))
})
# [1] FALSE TRUE FALSE
: [环境叙述]:
: R version 3.2.2 (2015-08-14)
: Platform: x86_64-w64-mingw32/x64 (64-bit)
: Running under: Windows 7 x64 (build 7601) Service Pack 1
: [关键字]:
: 选择性,也许未来有用