write.table()
работает лучше здесь, поскольку write.csv()
является более строгим, чтобы обеспечить постоянную запись допустимых файлов CSV.
write.table()
с append = TRUE
и col.names = FALSE
(для подавления имена столбцов, записываемые в файл несколько раз), должны помочь. Если вы хотите, чтобы разделитель был запятой, чтобы соответствовать спецификации csv, вы можете установить его в sep = ","
.
Вот как это может выглядеть:
Array1 <- array(0,c(2,2))
for(i in 1:5)
{
#Create 4 random numbers
Random1 <- runif(1, min=0, max=1)
Random2 <- runif(1, min=0, max=1)
Random3 <- runif(1, min=0, max=1)
Random4 <- runif(1, min=0, max=1)
#Assign Random numbers to the array
Array1[1,1] <- Random1
Array1[1,2] <- Random2
Array1[2,1] <- Random3
Array1[2,2] <- Random4
write.table(Array1,
sep = ",",
file = "OUT1.csv",
append = TRUE,
col.names = FALSE,
row.names = FALSE)
}
Если вы хотите избежать использования write.table (), почему бы не связать массивы в R, а затем записать все одновременно:
out_array <- array(numeric(), c(0,2))
for(i in 1:5)
{
Array1 <- array(dim = c(2,2))
#Create 4 random numbers
Random1 <- runif(1, min=0, max=1)
Random2 <- runif(1, min=0, max=1)
Random3 <- runif(1, min=0, max=1)
Random4 <- runif(1, min=0, max=1)
#Assign Random numbers to the array
Array1[1,1] <- Random1
Array1[1,2] <- Random2
Array1[2,1] <- Random3
Array1[2,2] <- Random4
out_array <- rbind(out_array, Array1)
}
write.csv(out_array, "OUT2.csv")
И, наконец, для энтузиастов функционального программирования - решение, которое делает все в одной цепочке труб и с картой мурлыкания:
library(dplyr)
library(purrr)
map(1:5, function(repeats) {
Array1 <- array(dim = c(2,2))
#Create 4 random numbers
Random1 <- runif(1, min=0, max=1)
Random2 <- runif(1, min=0, max=1)
Random3 <- runif(1, min=0, max=1)
Random4 <- runif(1, min=0, max=1)
#Assign Random numbers to the array
Array1[1,1] <- Random1
Array1[1,2] <- Random2
Array1[2,1] <- Random3
Array1[2,2] <- Random4
Array1
}) %>%
{do.call(rbind, .)} %>%
write.csv("OUT3.csv")