Вы должны split
ваш data.frame
в списке, затем печатается каждый элемент списка:
# here you split by the variable you want:
listed <- split(data, data$TM)
listed
# here the partial result
$B2
INr FNr TM I1 I2
1 1 1 B2 1598,45 0,14
2 2 1 B2 930,40 0,11
3 3 1 B2 107,86 0,04
4 4 1 B2 881,09 0,11
$B3
INr FNr TM I1 I2
5 7 1 B3 2201,98 0,15
6 8 1 B3 161,30 0,04
7 9 1 B3 1208,14 0,17
8 4 2 B3 831,75 0,12
9 5 2 B3 1027,41 0,14
10 7 2 B3 2052,16 0,15
11 8 2 B3 159,63 0,05
...
Тогда R является векторизованным языком, поэтому вам не нужно в этом случаецикл, но вы можете использовать одну из apply
функций, чтобы применить к каждому списку функцию, в данном случае, write.table
:
sapply(names(listed), # here the object to sapply the function
# here the function: you have to create the path with paste0
# adding the x to have the correct names
function (x) write.table(listed[[x]], file=paste0("C:\\Users\\Desktop\\",x, ".csv")))
С данными:
data <- read.table(text = "INr FNr TM I1 I2
1 1 B2 1598,45 0,14
2 1 B2 930,40 0,11
3 1 B2 107,86 0,04
4 1 B2 881,09 0,11
7 1 B3 2201,98 0,15
8 1 B3 161,30 0,04
9 1 B3 1208,14 0,17
4 2 B3 831,75 0,12
5 2 B3 1027,41 0,14
7 2 B3 2052,16 0,15
8 2 B3 159,63 0,05
9 2 B4 1111,49 0,16
10 2 B4 1312,15 0,12
1 3 B4 863,79 0,10
2 3 B4 104,06 0,04
3 3 B4 816,02 0,11
4 3 B4 1053,02 0,14
5 3 B5 132,32 0,03
6 3 B5 2059,03 0,14
7 3 B5 153,49 0,04
8 3 B5 1118,69 0,15
9 3 B5 1632,66 0,18
10 3 B5 1302,15 0,12", header = T)