我正在尝试使用reshape包中的transform
和colsplit
将数据帧的列拆分为2列。我不明白我做错了什么。这是一个例子......
library(reshape)
df1 <- data.frame(col1=c("x-1","y-2","z-3"))
现在,我正尝试将col1
分为col1.a
和col1.b
分隔符&#39; - &#39;。以下是我的代码...
df1 <- transform(df1,col1 = colsplit(col1,split='-',names = c('a','b')))
当我做View(df1)
时,现在在我的RStudio中,我确实看到col1.a和col1.b以我想要的方式分开。
但是当我跑...
df1$col1.a
或head(df1$col1.a)
我得到NULL。显然我无法对这些拆分列进行任何进一步的操作。这究竟出了什么问题?
答案 0 :(得分:4)
colsplit
返回一个列表,将这些列表分配给数据框中的多个列的最简单(和惯用)方法是使用[<-
例如
df1[c('col1.a','col1.b')] <- colsplit(df1$col1,'-',c('a','b'))
在变换中执行此操作会更加困难(请参阅Assign multiple new variables on LHS in a single line in R)