【发布时间】:2017-03-01 21:38:14
【问题描述】:
我是新的 R 用户。
我有一个包含 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
我应该如何修改代码?请帮忙。
【问题讨论】:
-
Groups 似乎不是行名,而是一个单独的列。如果这是真的,您可以将
raw_df[[i]]替换为raw_df[[c(1, i)]]。如果确实存储在行名中,则将row.names = F更改为row.names = TRUE。 -
是的,这些组在单独的列中。我已经编辑了这个问题。正如您所建议的那样,我尝试将 raw_df[[i]] 替换为 raw_df[[c(1,i)]] 但我收到此错误: .subset2(x, i, exact = exact) 中的错误:否1 级的此类索引。
-
当我运行
iris[[c(1,i)]]wherei = 5它返回一个值,而不是一列。 -
抱歉,打错了,
raw_df[[c(1, i)]]应该是raw_df[c(1, i)]。另外,raw_df[, c(1, i)]也可以。