我是新用户。
我有一个包含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
我应该如何修改代码?请帮助。
答案 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])})