说我有,
data.frame(foo=c(1,1,2,2), bar=c(1,2,3,4))
那是:
foo bar
1 1
1 2
2 3
2 4
我可以跑:
ddply(data, .(foo), function(df) {
print(df$bar) # => [1] 1 2
# => [1] 3 4
print(foo) # Error: object 'foo' not found
})
但我也知道foo
在函数内总是1
和2
。如何在不诉诸foo
的情况下获取此变量foo = unique(df$foo)
?
答案 0 :(得分:2)
这实际上是一个很好的问题,我不知道plyr
是否可以这样做,但在data.table
中你有一个特殊的方法.BY
例如
library(data.table)
setDT(data)[, .BY[1], foo]
# foo foo
# 1: 1 1
# 2: 2 2
或者
setDT(data)[, print(.BY[1]), foo]
# $foo
# [1] 1
#
# $foo
# [1] 2
或者
setDT(data)[, c(.BY[1], bar), foo]
# foo foo
# 1: 1 1 1 2
# 2: 2 2 3 4