我有一个小数据框:
> 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?
答案 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])