【发布时间】:2020-03-01 06:46:34
【问题描述】:
我想编写一个循环来从一个大型数据框(总共包含 48 列)创建数据子集,它还可以自动将这些子集写出到 .txt 文件中。我将首先描述我试图在每个文件中实现的结构:
- 前 9 列应按原样打印到从主文件创建的每个子集中。这些对于创建的所有文件都是必需的。每个子集共有 11 列。
- 第 10 列和第 11 列将在每个子集中发生变化。循环应该遍历原始数据框中剩余的 39 列,并以所有可能的方式组合它们。因此,如果原始数据集中的列名称是 AA、BB、CC、DD、EE,则子集数据的一些示例组合将是:
(前 9 列)AA BB
(前 9 列)AA CC
(前 9 列)AA DD
(前 9 列)AA EE
- 文件应根据第 10 列和第 11 列的名称写出。因此,循环创建的文件将是:
AAxBB.txt
AAxCC.txt
AAxDD.txt
AAxEE.txt
我之前曾尝试编写使用列名的循环,但对我来说效果不佳。有关我如何尝试编写代码的示例,请参阅此 previous question。我想知道的是如何潜在地使用列名两次作为变量,以便按照我的意愿写出文件。那可能吗?索引系统会更好吗?非常感谢任何帮助!
这是我目前正在解决的问题:
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")
}
}
【问题讨论】:
-
您知道
"print(i)"只是一个字符串,而不是打印i值的一种方式吗?