我想编写一个循环,以从大型数据帧(总共包含48列)创建数据子集,该数据集也可以自动将这些子集写到.txt文件中。我将从描述每个文件中要实现的结构开始:
(前9栏)AA BB
(前9栏)AA CC
(前9列)AA DD
(前9列)AA EE
AAxBB.txt
AAxCC.txt
AAxDD.txt
AAxEE.txt
我以前曾尝试编写使用列名的循环,但对我来说结果并不理想。请参阅前面的问题,以获取有关如何尝试编写代码的示例。我想知道的是如何潜在地两次使用列名作为变量,以便按我的意愿写出文件。那可能吗?索引系统会更好吗?非常感谢您的协助!
到目前为止,这是我正在研究的内容:
for (i in colnames(data)){
for (j in colnames(data){
subset = subset(data, select = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "print(i)", "print(j)"
write.table(subsetprint(i)&print("x")&print(j), file ="print(i)&print("x")&print(j)", quote = F, row.names = F, col.names = F, sep = " ", na = "-999")
}
}
基本功能combn
对此非常理想。您可以获取其余列名称中所有2×2的组合,并在每个组合上调用一个函数。
首先,一些数据。
set.seed(1234)
df1 <- matrix(rnorm(5*(4+5)), nrow = 5)
df1 <- as.data.frame(df1)
现在的代码。请注意,我将只保留前4列,而不是9列。您应该将functionfun
参数的默认值更改DF = df1
为DF = yourdata
。
first_cols <- 1:4
fun <- function(nms, DF = df1, fc = first_cols){
cols <- c(names(DF)[fc], nms)
outfile <- paste(nms, collapse = 'x')
outfile <- paste(outfile, 'txt', sep = '.')
write.table(DF[cols], outfile,
row.names = FALSE, col.names = FALSE,
quote = FALSE, sep = ' ')
cols
}
combn(names(df1)[-first_cols], 2, fun)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句