我正在尝试按列拆分数据表,但是一旦我获得数据表列表,它们仍然包含数据表被拆分的列。拆分完成后,我将如何删除此列。或者更优选地,有没有办法如何删除多个列。
这是我的代码:
x <- rnorm(10, mean = 5, sd = 2)
y <- rnorm(10, mean = 5, sd = 2)
z <- sample(5, 10, replace = TRUE)
dt <- data.table(x, y, z)
split(dt, dt$z)
Run Code Online (Sandbox Code Playgroud)
生成的数据表子集看起来像这样
$`1`
x y z
1: 6.179790 5.776683 1
2: 5.725441 4.896294 1
3: 8.690388 5.394973 1
$`2`
x y z
1: 5.768285 3.951733 2
2: 4.572454 5.487236 2
$`3`
x y z
1: 5.183101 8.328322 3
2: 2.830511 3.526044 3
$`4`
x y z
1: 5.043010 5.566391 4
2: 5.744546 2.780889 4
$`5`
x y z
1: 6.771102 0.09301977 5
Run Code Online (Sandbox Code Playgroud)
谢谢
除非您有一些奇特的并行化步骤要遵循,否则拆分 data.table 真的不值得。即便如此,您最好还是坚持使用一张桌子。
也就是说,我想你想要
split( dt[, !"z"], dt$z )
# or more generally
mysplitDT <- function(x, bycols)
split( x[, !..bycols], x[, ..bycols] )
mysplitDT(dt, "z")
Run Code Online (Sandbox Code Playgroud)
如果你有一个 data.frame,你会遇到同样的问题:
df = data.frame(dt)
split( df[-which(names(df)=="z")], df$z )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1837 次 |
| 最近记录: |