如何使用带有公式的dcast.data.table作为字符串

Ha *_*ham 7 r reshape data.table

我想使用强制转换为data.table,其公式名称为列字符串

我的桌子:

c1    c2    c3
1     A     1
1     B     2
1     C     3
2     A1    1
2     B1    2
2     C1    3
Run Code Online (Sandbox Code Playgroud)

我想得到结果:

c1    1    2    3
1     A    B    C
2     A1   B1   C1
Run Code Online (Sandbox Code Playgroud)

我可以用命令做到这一点

dcast.data.table(dt, c1 ~ c3, value.var = "c2")

但我想在一个函数中运行dcast,该函数具有c1列名称的参数作为字符串.例如

f1 <- function(d, col_name1, col_name2, col_name3) {
  dcast.data.table(d, col_name1 ~ col_name3, value.var = col_name2)
}
Run Code Online (Sandbox Code Playgroud)

所以我打电话

f1(dt, "c1", "c2", "c3")
Run Code Online (Sandbox Code Playgroud)

希望有人可以帮忙!

Aru*_*run 8

dcast 也接受公式作为字符串.

f1 <- function(d, col_name1, col_name2, col_name3) {
    dcast.data.table(d, paste(col_name1, "~", col_name3), value.var = col_name2)
}

f1(dt, "c1", "c2", "c3")
#    c1  1  2  3
# 1:  1  A  B  C
# 2:  2 A1 B1 C1
Run Code Online (Sandbox Code Playgroud)

请注意,您不必加载reshape2,也可以直接使用dcast而不是dcast.data.table版本1.9.5+