R 如何为数据框中的每列创建多个文本文件并保留第一列?
我是一个新的R用户 我有一个包含503列的excel文件。第一列表示组,第二列直到最后一列是数字特征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 我想在一次运行中为每
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