如何为数据框中的每个列创建多个文本文件并保留第一列?

时间:2017-03-01 13:21:55

标签: r loops

我是新用户。

我有一个包含503列的excel文件。第一列表示组,而第二列表示最后一列是数字特征。

 Groups     length    width   ellip ... nth_trait
 AAA         2          1       7           1
 BBB         4          5       6           0
 CCC         1          6       3           5

我想在一次运行中为每个特征创建文本文件,文件名基于特征。代码如下所示:

 raw <- read_excel("raw_data.xlsx", sheet = 1)
 raw_df <- as.data.frame(raw)

 for (i in names(raw_df)) {
 raw_file <- paste(i, ".txt", sep = "")
 write.table(raw_df[[i]], raw_file, sep = "\t", quote = F, row.names = F, col.names = T, append = F)
}

输出包含503个文本文件。每个文件只包含一列,对应于数据框中的每一列。

但我对每个文本文件的所需输出必须包含第一列(组名),然后是特征,如下所示:

 length.txt

 Groups     length
 AAA          2
 BBB          4
 CCC          1

 width.txt

 Groups     width
 AAA          1
 BBB          5
 CCC          6

我应该如何修改代码?请帮助。

1 个答案:

答案 0 :(得分:1)

write.table函数中,尝试使用cbind将第一列与循环中引用的任何列连接起来:

write.table(cbind(raw_df[1], raw_df[i]), raw_file, sep = "\t", quote = F, row.names = F, col.names = T, append = F)

这应该有效,基于这个例子:

lapply(1:5, function(x){cbind(iris[1],iris[i])})