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

R 如何为数据框中的每列创建多个文本文件并保留第一列?,r,loops,R,Loops,我是一个新的R用户 我有一个包含503列的excel文件。第一列表示组,第二列直到最后一列是数字特征 Groups length width ellip ... nth_trait AAA 2 1 7 1 BBB 4 5 6 0 CCC 1 6 3 5 我想在一次运行中为每

我是一个新的R用户

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

 Groups     length    width   ellip ... nth_trait
 AAA         2          1       7           1
 BBB         4          5       6           0
 CCC         1          6       3           5
我想在一次运行中为每个trait创建文本文件,文件名基于trait。代码如下所示:

 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)
}

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

在您的
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,函数(x){cbind(iris[1],iris[i])})

组似乎不是行名,而是一个单独的列。如果这是真的,您可以将
raw_-df[[i]]
替换为
raw_-df[[c(1,i)]]
。如果它确实存储在行名称中,则将
row.names=F
更改为
row.names=TRUE
。是的,组在单独的列中。我已经编辑了这个问题。正如你所建议的,我试图用raw_-df[[c(1,I)]]替换raw_-df[[I]],但我得到了这个错误:subset2(x,I,exact=exact):在级别1没有这样的索引。当我运行
iris[[c(1,I)]
时,其中
I=5
它返回一个值,而不是一列。对不起,
raw_-df[[c(1,I]
应该是
raw_-df[c(1,I]
。而且,
raw_df[,c(1,i)]
也可以工作。
 length.txt

 Groups     length
 AAA          2
 BBB          4
 CCC          1

 width.txt

 Groups     width
 AAA          1
 BBB          5
 CCC          6