将apply()的内容保存到CSV

时间:2014-01-13 00:19:35

标签: r csv matrix frequency

我有以下示例数据:

library(prodlim)

NUM <- 100
dat1 <- SimSurv(NUM)
dat1$time <- sample(24:160,NUM,rep=TRUE)
dat1$X3 <- sample(0:1,NUM,rep=TRUE)
dat1$X4 <- sample(0:9,NUM,rep=TRUE)
dat1$X5 <- sample(c("a","b","c"),NUM,rep=TRUE)
dat1$X6 <- sample(c("was","que","koa","sim","sol"),NUM,rep=TRUE)
dat1$X7 <- sample(1:99,NUM,rep=TRUE)
dat1$X8 <- sample(1:200,NUM,rep=TRUE)

attach(dat1)

我找到了一个简洁的代码行,它提供了一个简单summary(dataset)在“Loop through a .csv file in R, computing relative frequencies?”问题中无法执行的所有必要频率:

freq <- apply(X = dat1, MARGIN = 2, FUN = function(x) {summary(factor(x))})

我的问题是如何提取每个变量频率,以便我可以在一个命令中将它们保存在CSV文件中?

命令freq[1:1]freq[n:n]完成工作,但编辑每个打印加上控制台中的输出需要进一步的文本编辑是很繁琐的。

1 个答案:

答案 0 :(得分:1)

@user20650的帮助下,我设法解决了我的问题。

freq <- apply(X = dat1, MARGIN = 2, 
  FUN = function(x) {
    summary(factor(x), , maxsum=Inf))
    # maxsum=Inf will prevent truncation of value frequencies
})

sapply(seq(freq), 
  function(z) write.csv(
    freq[z], 
    paste0("path/to/folder/",names(freq[z]),".csv") 
  )
)