仅获取R数据帧中元素的值(不带索引)

时间:2013-08-29 10:35:58

标签: r indexing dataframe

我有一个小数据框:

> testdfcompound_1
                            E1          E2
2012-05-17 01:00:58   20.94700    2.148299
2012-05-17 01:01:57   15.36875    2.199166
2012-05-17 01:02:56   19.05800    2.697803
2012-05-17 01:03:55   17.90500    2.358735

我想只得到第一个元素的E1值,所以,20.94700。

但是我找不到办法来获得它。如果我尝试:testdfcompound_1$E1[1],我会:

> testdfcompound_1$E1[1]
                        E1
2012-05-17 01:00:58 20.947

我如何才能获得20.947?

4 个答案:

答案 0 :(得分:20)

加上方括号。

d1 <- data.frame(a=1:5, b=rnorm(5))
d1$b[[3]]

应该这样做。但是有很多方法可以做到这一点......

答案 1 :(得分:4)

as.double( testdfcompound_1$E1[1])

然后你也得到了价值。 “ 2012-05-17 01:00:58 ”和“ E1 ”不是您案例中的行名和列名吗?

答案 2 :(得分:1)

我觉得这有点令人费解。 str(testdfcompound_1)显示什么? 如果您有数据框,您的子集应该有效。

一个小例子,它会生成一个数据框看起来就像您的示例数据一样,并且子集可以正常工作。

set.seed(123)
df <- data.frame(E1 = rnorm(5) + 20, E2 = rnorm(5) + 2)
df
rownames(df) <- Sys.time() + 1:5
df
# looks pretty similar

df$E1[1]
# returns the number only. 

答案 3 :(得分:0)

您获得该格式输出的原因是,

dataframe$field[i]

返回一个因子。 我通过将它传递给函数as.vector()来解决了这个问题,该函数返回了第一个值。

as.vector(dataframe$field[i])