【发布时间】:2013-07-17 19:02:10
【问题描述】:
好的,谢谢你,我会重新开始这个问题:
这是我的 df
df = read.table(text = ' replicate size fh
ms03a_T0_r1 397.51 1099
ms03a_T0_r1 695.46 8
ms03a_T0_r1 708.76 1409
ms03a_T0_r1 1203.98 102
ms03a_T0_r2 397.52 749
ms03a_T0_r2 493.97 23
ms03a_T0_r2 538.43 12
ms03a_T0_r3 397.49 638
ms03a_T0_r3 399.84 9
ms03a_T0_r3 404.95 33
ms03a_T0_r3 406.85 40 ', header = T)
Rn <- as.numeric(length(levels(ol$replicate)))
# just to calculate the number of samples
据此,我希望拥有 3 个新数据集,每个数据集将仅包含具有“复制”变量的 *_r1 值的行、具有 *_r2 的行和具有 *_r3 的行。
我想用这些命令做到这一点:
for (i in 1:Rn){
x <- df[as.character(sub('.*_r', '', as.character(replicate))) %in% i];
outfile <- paste("rep_",i,"_edited.txt",sep="")
write.table(x,quote=FALSE,sep=", ",outfile)
}
但我能够获得 .txt 输出,而不是 r 中的 df 对象。这样,我将不得不在 r 中再次导入它们以继续我的“脚本”的下一步,我不知道如何设置 r 以自动导入它们
【问题讨论】:
-
[i]_subsetted不是有效的 R 名称。那应该是什么?otus_list是什么?replicate是什么?您的预期输出是什么? -
[i]_subsetted 应该是子集行的输出 df。抱歉,otus_list 只是主数据框的名称。我想要(对于目前的主要 df)3 个新的 df:一个带有 *_r1 行,一个带有 *_r2 行,一个带有 *_r3 行
-
在这种情况下,eddi 使用
split的最终建议可能就是您想要的。但是请务必阅读?make.names,这样您至少可以知道 R 中的有效变量名是什么。