2017-01-19 55 views
-7

我的数据帧是选择在一个循环中一些列并保存单独

c1 c2 c3 c100 
0.2 0.4 0.9 0 
0.2 0.3 0 1 
0.1 0.6 1 0.3 

我想OT选择C1 C2和C3的C1 C2和C4,同样C1,C2,和C100。每3个选定的列应保存在单独的文件中。我怎么能在r?

+1

这应该为'c3'和'c100'之间的所有变量完成吗? – LAP

+0

[This](http://stackoverflow.com/questions/18298825/how-to-obtain-all-combinations-of-the-columns-of-a-data-frame-taken-by-2)然后[这个](http://stackoverflow.com/questions/34723202/save-all-data-frames-in-list-to-separate-csv-files) – Sotos

+5

昨天你已经问过这个问题了。 [选择一些列来创建几个文件](http://stackoverflow.com/questions/41699952/select-some-columns-to-create-several-files)。 –

回答

-1

我们可以使用combn

lst <- combn(df1, 3, FUN = list) 
names(lst) <- sapply(lst, function(x) paste(names(x), collapse="_")) 
lapply(names(lst), function(x) write.table(lst[[x]], paste0(x, ".csv"))) 

如果是追加第一和第二列的所有其他列

lst <- lapply(names(df1)[3:100], function(i) df1[c(1:2, i)]) 
names(lst) <- sapply(lst, function(x) paste(names(x), collapse="_")) 
lapply(names(lst), function(x) write.table(lst[[x]], paste0(x, ".csv"))) 
+0

好吧,一些优惠downvote提供相同的答案:-) – akrun

+0

谢谢,现在全部排序! – user2808642

0

假设x是你data.frame您可以使用此:

for (i in 3:100){ 
    tmp <- x[, c(1,2,i)] 
    write.table(tmp, paste0("some/file/path/and/name_", i, ".csv")) 
} 

通过使用迭代器i作为文件名,您可以创建单个文件名。