我正在尝试创建一个函数,该函数接受至少100个变量的数据帧并对其进行切片,这样我就可以得到多个始终包含前5个变量和其余10个变量的dfs,然后写入生成的切片我想要自动化的示例:
First_slice <- df1[,c(1:5, 6:15)]
Second_slice <- df1[,c(1:5, 16:25)]
我的功能
Auto.Slice <- function(df, base= 'slice'){
x <- seq(6, 194, 10) #vector with the starts of my slices
#print(x)
#View(df)
One.Slice <- function(df1, x=NULL, base){
#View(df1)
y <- if (x+9 <= ncol(df1)) x+9 else ncol(df1)
#print(y)
df2 <- df1[,c(1:5, x:y)]
#View(df2)
#print(base)
file_name <- paste(base, x,'_', y, '.csv', sep ='')
#print(file_name)
write.table(df2, file_name, row.names = F, sep='t', col.names = T)
}
One.Slice(df, x, base)
}
Auto.Slice(df = MS)
为了识别错误,我添加了几个"打印"语句,发现问题出在我想将每个切片写入.csv.时
我还没有找到解决这个问题的答案。有趣的是,当我写出书面陈述时,它就起作用了。
错误消息
文件中的错误(file,ifelse(append,"a","w"((:无效的"description"参数
Okey,没关系,我意识到变量"file_name"是一个字符向量,它包含了我的切片的所有名称。为了解决这个问题,我使用了for循环。
Auto.Slice <- function(df, base= 'slice'){
x <- seq(6, 194, 10) #vector with the starts of my slices
One.Slice<-function(df1, x=NULL, base){
y <- if (x+9 <= ncol(df1)) x+9 else ncol(df1)
df2 <- df1[,c(1:5, x:y)]
file_name <- paste(base, x,'_', y, '.csv', sep ='')
for (i in file_name){
write.table(df2, i, row.names = F, sep='t', col.names = T)
}
}
One.Slice(df, x, base)
}
Auto.Slice(df = MS)