我正在尝试使用reshape软件包transform和colsplitfrom reshape软件包将数据框的一列分为2列。我不明白我在做什么错。这是一个例子
library(reshape)
df1 <- data.frame(col1=c("x-1","y-2","z-3"))
Run Code Online (Sandbox Code Playgroud)
现在,我尝试将分隔col1为col1.a和col1.b在分隔符“-”处。以下是我的代码...
df1 <- transform(df1,col1 = colsplit(col1,split='-',names = c('a','b')))
现在在我的RStudio中,我确实View(df1)可以看到col1.a和col1.b分开了我想要的方式。
但是当我运行时...
df1$col1.a或者head(df1$col1.a)我得到NULL。显然,我无法对这些拆分列进行任何进一步的操作。这到底有什么问题?
colsplit 返回列表,将这些列表分配给数据框中的多列的最简单(惯用方式)是 [<-
例如
df1[c('col1.a','col1.b')] <- colsplit(df1$col1,'-',c('a','b'))
Run Code Online (Sandbox Code Playgroud)
在转换中很难做到这一点(请参阅R的一行中在LHS上分配多个新变量)