2017-01-19 57 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作爲文件名,您可以創建單個文件名。