๋ฌธ์ #713์ ์ฐธ์กฐํ๋ฉด ๋ฐฉ๊ธ ๊ด๋ จ ๋ฒ๊ทธ๋ฅผ ์ฐพ์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ด ์ปดํจํฐ์์ dcast.data.table์ ํธ์ถํ๋ ํจ์ ๋ด์์ ์ง๊ณ ํจ์ ์ ์ธ ๋ฐ ์ ๋ฌ ์คํจ
R ๋ฒ์ 3.2.2(2015-08-14)
ํ๋ซํผ: x86_64-apple-darwin13.4.0(64๋นํธ)
์คํ: OS X 10.10.2(์์ธ๋ฏธํฐ)
data.table_1.9.6
๋ค์์ ์์ ๋๋ค.
testdata=data.table(c(1,1, 1, 2, 2), c(1,2,3, 4, 5), c( "a", "a", "b", "a", "b"))
colnames(testdata)=c("ID", "VAL", "CLASS")
#test dcast.data.table within function with internally declared aggregate fun -> FAILS
test_dcast_dt2 <- function(data) {
testfunc2 <- function(x) {
sum(x)
}
data_cast=dcast.data.table(data, "ID ~ CLASS", value.var="VAL", fun.aggregate=testfunc2)
}
res2=test_dcast_dt2(testdata)
์ด ๊ฒฝ์ฐ๋ ์คํจํ๋ ๊ฒ์ ๋ณด๋ ๊ฒ์ ํฅ๋ฏธ ๋กญ์ต๋๋ค.
testdata=data.table(c(1,1, 1, 2, 2), c(1,2,3, 4, 5), c( "a", "a", "b", "a", "b"))
colnames(testdata)=c("ID", "VAL", "CLASS")
test_dcast_dt <- function(data, aggfunc) {
data_cast=dcast.data.table(data, "ID ~ CLASS", value.var="VAL", fun.aggregate=aggfunc)
}
custom_sum <- function(x) {
sum(x)
}
res=test_dcast_dt(testdata, custom_sum)
์ ๋ฌ๋ func์ ๋ณ์ ์ด๋ฆ์ด ํญ์ "fun.aggregate"์ธ ๊ฒฝ์ฐ์๋ง ๋ฌธ์ #713์ด ์์ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ์์ ๋ ์ด์ ์์ ์ ๋์กฐ์ ์ผ๋ก ์๋ํฉ๋๋ค.
testdata=data.table(c(1,1, 1, 2, 2), c(1,2,3, 4, 5), c( "a", "a", "b", "a", "b"))
colnames(testdata)=c("ID", "VAL", "CLASS")
test_dcast_dt <- function(data, fun.aggregate) {
data_cast=dcast.data.table(data, "ID ~ CLASS", value.var="VAL", fun.aggregate=fun.aggregate)
}
custom_sum <- function(x) {
sum(x)
}
res=test_dcast_dt(testdata, custom_sum)
์ด ๋ฒ๊ทธ์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํ์ง๋ง ๋์ผํ ๋ฌธ์ ์ธ์ง ํ์ธํ๊ณ ์ถ์์ต๋๋ค. dcast๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ํจ์ ๋ด์์ fun.aggregate๋ฅผ ์ ์ํ๋ ค๊ณ ํ์ต๋๋ค. ๊ฐ๋จํ ์:
wrapper <- function() {
f <- function(x) list(x)
dcast(data, y ~ x + b, fun.aggragate = f)
}
ํน์ sys.call ํ๊ฒฝ์ ๋์์ผ๋ก get()์ ์ฌ์ฉํ์ฌ f๋ฅผ ์ฐพ์ผ๋ ค๊ณ ์๋ํ์ต๋๋ค. ๋ํ f๋ฅผ ๊ธฐ๋ณธ ํ๊ฒฝ์์ new.env()์ ์ฒจ๋ถํ๋ ค๊ณ ์๋ํ์ต๋๋ค. ๊ทธ๋์ "d0rg0ld๊ฐ 2015๋ 10์ 2์ผ์ ๋๊ธ์ ๋ฌ์์ต๋๋ค" ๋๊ธ์ด ํ์ฌ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋๊น?
SO์ ๋ํ ๊ด๋ จ ์ง๋ฌธ: R data.table ํจ์๊ฐ ์ด๋ฏธ ์ง์ ๋ ์ธ์๋ฅผ ์ธ์ํ์ง ๋ชปํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ ๋ฌ๋ func์ ๋ณ์ ์ด๋ฆ์ด ํญ์ "fun.aggregate"์ธ ๊ฒฝ์ฐ์๋ง ๋ฌธ์ #713์ด ์์ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ์์ ๋ ์ด์ ์์ ์ ๋์กฐ์ ์ผ๋ก ์๋ํฉ๋๋ค.