17

我有一个小数据框在于:

> 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

4 回答 4

37

将方括号加倍。

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

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

于 2013-08-29T10:45:00.013 回答
6
as.double( testdfcompound_1$E1[1])

然后你也得到了价值。在您的情况下, “ 2012-05-17 01:00:58 ”和“ E1 ”不是行名和列名吗?

于 2013-08-29T11:15:34.083 回答
4

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

dataframe$field[i]

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

as.vector(dataframe$field[i])
于 2018-04-26T08:24:55.060 回答
3

我觉得这有点令人费解。显示什么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. 
于 2013-08-29T14:58:51.733 回答