我正在尝试拆分包含354(a1-a354)列的数据框。 例如:
a1 a2
1 aa aa
2 bb bb
3 cc cc
目前,我使用以下代码:
df1<- extract(df1,1, c("D","M"), "(.)(.)",convert=TRUE)
当我一次在一列上使用它时(我不关心列名),这非常有效,但是因为我有354列,所以我试图循环它。到目前为止,我已经尝试制作一个函数,所以我可以使用lapply。我也试过for循环。我总是得到 错误:数据源必须是字典
我一直在尝试以下方法:
colseparator <- function(x) {
df1<- extract(df1,x, c("D","M"), "(.)(.)",convert=TRUE)
}
我试过的其他事情是
for (x in c(7,9,11)){
df1<- extract(df1,x, c("D","M"), "(.)(.)",convert=TRUE)
}
我的方法都没有用,显然我做错了。 任何帮助将不胜感激。
答案 0 :(得分:0)
有几种选择。一种方法是将paste
行放在一起,使用gsub
创建分隔符并使用read.table/read.csv
读取
read.table(text=gsub('(?<=[a-z])(?=[a-z])', ',', do.call(paste, df1),
perl = TRUE), header = FALSE, stringsAsFactors=FALSE, sep=',')
或者我们可以通过循环遍历列,然后strsplit
rbind
分开
do.call(rbind, lapply(df1, function(x) do.call(rbind, strsplit(x, "(?<=.)", perl = TRUE))))