【发布时间】:2012-05-26 16:19:26
【问题描述】:
如果你有一个文件列表,并且你想将 1 与一组其他文件进行比较,你会怎么做?
my.test <- list[1]
my.reference.set <- list[-1]
这当然可行,但我想在一个循环中使用它,my.test 每次都不同(因此列表中的每个文件都是 my.test 进行一次迭代,即我有一个包含 250 个文件的列表,并且我想对其中的 12 个文件的每个子集执行此操作。
> num <- (1:2)
> sdasd<- c("asds", "ksad", "nasd", "ksasd", "nadsd", "kasdih")
> splitlist<- split(sdasd, num)
> splitlist
$`1`
[1] "asds" "nasd" "nadsd"
$`2`
[1] "ksad" "ksasd" "kasdih"
> for (i in splitlist) {my.test <- splitlist[i] # "asds"
+ my.reference.set <- splitlist[-i] # "nasd" and "nadsd"
+ combined <- data.frame (my.test, my.reference.set)
+ combined}
Error in -i : invalid argument to unary operator
>
那么我希望下一次迭代是,
my.test <- splitlist[i] #my.test to be "nasd"
my.reference.set <- splitlist[-i] # "asds" and "nadsd"
}
最后对于 splitlist[1],
my.test <- splitlist[i] # "nadsd"
my.reference.set <- splitlist[-i] # "asds" and "ksad"
}
那么 splitlist[2] 也一样
【问题讨论】:
-
如果你创建了可重复的例子,很可能有人会看一看。 (如果示例不可重现,我倾向于继续。)现在,您显然无法制作 250 个文件的可重现示例。但这没关系,因为您的问题是关于 250 项的列表。但它也可以是 5 个项目。因此,编写一些代码,其中包含 5 个项目的列表来说明您的问题。那我会试着理解你的问题。
-
我详细阐述了我想做什么。
-
好的,现在添加示例数据和预期结果。关键是“正确”的答案会产生您预期的结果。
-
是的,我明白这一点。但这不是你问题的关键。尝试将您的问题概括为比较
objects,而不是files。一旦你有了比较对象集的有效算法,就很容易修改它来比较文件。 -
在某种意义上是可重现的,我们可以将其复制粘贴到 R 会话中并获得一个工作示例。