【发布时间】:2015-06-05 08:41:42
【问题描述】:
我想在处理后选择data.list 的特定元素。
为了获得工艺参数,我在可重现的示例中描述了我的问题。
在下面的示例代码中,我有三组data.list,每组有 5 列。
每个data.list 重复三次,每个data.list 分配给定义这些数据集的唯一编号set_nbr。
#to create reproducible data (this part creates three sets of data each one repeats 3 times of those of Mx, My and Mz values along with set_nbr)
set.seed(1)
data.list <- lapply(1:3, function(x) {
nrep <- 3
time <- rep(seq(90,54000,length.out=600),times=nrep)
Mx <- c(replicate(nrep,sort(runif(600,-0.014,0.012),decreasing=TRUE)))
My <- c(replicate(nrep,sort(runif(600,-0.02,0.02),decreasing=TRUE)))
Mz <- c(replicate(nrep,sort(runif(600,-1,1),decreasing=TRUE)))
df <- data.frame(time,Mx,My,Mz,set_nbr=x)
})
应用一些函数后,我得到了这样的输出。
result
time Mz set_nbr
1 27810 -1.917835e-03 1
2 28980 -1.344288e-03 1
3 28350 -3.426615e-05 1
4 27900 -9.934413e-04 1
5 25560 -1.016492e-02 2
6 27360 -4.790767e-03 2
7 28080 -7.062256e-04 2
8 26550 -1.171716e-04 2
9 26820 -2.495893e-03 3
10 26550 -7.397865e-03 3
11 26550 -2.574022e-03 3
12 27990 -1.575412e-02 3
我的问题从这里开始。
1) 对于每个set_nbr,如何获取time 列的min、middle 和max 值?
2) 如何在data.list 中使用已评估的set_nbr 和Mz 值?
总之;
在确定time 列中的min、middle 和max 值以及result 中每个set_nbr 对应的Mz 值之后,我想返回到原始data.list 和根据set_nbr 和Mz 的值提取Mx、My、Mz 的列。由于每个set_nbr实际上对应600行,我想从data.list中提取那些定义的set_nbrs族
我们使用time 作为factor 来选择set_nbr。这里factor 表示作为提取参数而不是R 命令中真正的factor。
此外,您将看到每个数据集存在四个 set_nbr,但它们确实在 data.list 中处理不同的数据集
【问题讨论】:
-
有很多代码似乎对这个问题并不重要。您能否尝试制定一个最小的示例,隔离您问题的核心?
-
@baptiste 实际上需要
myfun,因为如果没有该功能,您将无法达到条件。此外,我还对每个部分的内容进行了评论。 -
那么你应该缩小你的问题范围。看起来你有一个大问题,实际上是 3 个小问题。 “我想回到原来的data.list,根据set_nbr的值选择Mx、My、Mz值。”这听起来像问题 1。也许做一个只是那个的最小例子,然后当这部分解决后,从那里继续。
-
@Gregor 感谢您的建议。我修改了我的问题。请检查。
-
这仍然是至少两个问题。绘制系列与提取最小值和最大值无关。我将回答第一部分。 如果您仍然需要帮助,您应该从这个问题中删除图形位,并将其作为一个单独的新问题提出。