【发布时间】:2014-09-20 18:56:24
【问题描述】:
想知道如何拆分 data.table 的列。
可以使用以下代码轻松拆分data.frame 的列:
df <- data.frame(Test=c("A - B", "C - D"))
df
Test
1 A - B
2 C - D
library(reshape2)
reshape2:::colsplit(string = df[,1], pattern = " ", names = c("Var1", "Space", "Var2"))
Var1 Space Var2
1 A - B
2 C - D
但我尝试拆分 data.table 的列失败
library(data.table)
dt <- data.table(Test=c("A - B", "C - D"))
dt
Test
1: A - B
2: C - D
reshape2:::colsplit(string = dt[,1, with=FALSE], pattern = " ", names = c("Var1", "Space", "Var2"))
Error: String must be an atomic vector
【问题讨论】:
-
试试
string = dt[[1]] -
感谢@Arun 的帮助。您能否更改您的评论以回答并解释
[[1]]背后的逻辑。谢谢 -
@MYaseen208,请使用
class来理解它。简而言之,当您执行df[,1]时,它变成了一个向量(不再是data.frame),但是当您执行dt[,1, with=FALSE]时,它仍然是一个data.table。colsplit的错误清楚地表明你必须给它一个原子向量,因此为了实现这一点,你要做dt[[1]]
标签: r data.table reshape reshape2