2

我对 R 相当陌生,我必须遵循以下情况。我得到了一个包含如下内容的文本文件:

[1] a b c d e f g
[2] h i j k
[3] l m n o
[4] x y z

我想将属于同一标识符([x])的所有字符分组到一个数组中。由于我想访问所有标识符的所有字符,因此我需要一个二维数组(数组的数组)。这是我尝试过的:

> bigvector <- vector()
> bigvector <- append(bigvector, vector())
> bigvector[0][0] <- "Test"
> > bigvector[0][0]
logical(0)

因此,不会返回“测试”。我也试过:

> tmpvector <- c("A", "B", "C", "D", "E", "F")
> bigvector <- vector()
> bigvector <- append(bigvector, tmpvector)
> bigvector[0][0]
character(0)

这应该是一项容易的任务,但是我正在努力完成它。

4

1 回答 1

2

我不确定你想做什么以及你是否真的需要array对象。

我建议使用列表。这是一个假设您[x]只是行号的示例。

#read the data using readLines
tc <- textConnection("[1] a b c d e f g
[2] h i j k
[3] l m n o
[4] x y z")

dat <- readLines(tc)

#split at spaces
dat <- strsplit(dat,split=" ")

#remove identifier
rm1 <- function(x) x[-1] 
dat <- sapply(dat,rm1)

dat
#[[1]]
#[1] "a" "b" "c" "d" "e" "f" "g"
#
#[[2]]
#[1] "h" "i" "j" "k"
#
#[[3]]
#[1] "l" "m" "n" "o"
#
#[[4]]
#[1] "x" "y" "z"

dat[[3]][3]
#[1] "n"

编辑:

对于评论中给出的数据,您应该使用lapply.

dat <- readLines(file('http://pastebin.com/raw.php?i=tJW8H6K1'))

#split at spaces
dat <- strsplit(dat,split=" ")

#remove identifier
rm1 <- function(x) x[-1] 
dat <- lapply(dat,rm1)

#first five characters of the first line
dat[[1]][1:5]
#[1] "1" "1" "0" "1" "0"
于 2012-10-26T11:21:27.137 回答