我是R的新手,我遇到了一个奇怪的错误。我有这样的表:
dat<-c(1,2,3,4,4,53,62,345,3,4,346,23,34,52,34,2345,23,4)
dat.table<-table(dat)
这会创建一个表,我想从此表中获取一个特定的列。当我尝试dat.table[[3]]
时,它给出了2,这是向量中3的真实出现。但是,当我尝试dat.table[[2345]]
时,虽然rownames(dat.table)
中存在2345,但它会出现以下错误:
Error in b[[2345]] : subscript out of bounds
这可能是一个基本问题,但奇怪的是为什么R对不同的rownames表现不同!! 我感谢任何帮助。
答案 0 :(得分:1)
访问data.table项目:
dat.table['2345']
2345
1
dat.table不是data.frame。请尝试以下方法:
ddf = data.frame(dat.table)
ddf
dat Freq
1 1 1
2 2 1
3 3 2
4 4 4
5 23 2
6 34 2
7 52 1
8 53 1
9 62 1
10 345 1
11 346 1
12 2345 1
ddf[12,]
dat Freq
12 2345 1
ddf[12,2]
[1] 1
hd [[in]]给定列号i:
ddf[[1]]
[1] 1 2 3 4 23 34 52 53 62 345 346 2345
Levels: 1 2 3 4 23 34 52 53 62 345 346 2345
ddf[[2]]
[1] 1 1 2 4 2 2 1 1 1 1 1 1
对于wide data.frame:
tt = data.frame(t(ddf))
tt
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12
dat 1 2 3 4 23 34 52 53 62 345 346 2345
Freq 1 1 2 4 2 2 1 1 1 1 1 1
答案 1 :(得分:1)
偶然地,“{3”的出现存储在dat.table
的第3列中。
让我们试试这个例子(添加2个零):
dat <- c(0,1,2,3,4,4,53,62,345,3,4,346,23,34,0,52,34,2345,23,4)
dat.table[[3]]
[1] 1
哎呀,错误的价值。现在,让我们试试
dat.table[["3"]]
[1] 2
正确
“2345”是一个字符,列的名称。键入dat.table[[2345]]
时,您尝试访问不存在的第2345个元素。您需要指定列的名称
dat <- c(1,2,3,4,4,53,62,345,3,4,346,23,34,52,34,2345,23,4)
dat.table <- table(dat)
dat.table[["2345"]]
[1] 1