【问题标题】:Referring to elements of a matrices list引用矩阵列表的元素
【发布时间】:2019-12-15 18:51:58
【问题描述】:

我创建了一个矩阵列表,如下所示:

#create the database
vect_date <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14)
vect <- c(48,40,32,36,37,37,20,15,15,24,24,10,10,10)
vect <- as.data.frame(cbind(vect_date, vect))
vect <- vect[order(vect$vect_date),]
#create levels depending on vect$vect value
vect$level <- 1
for(i in 2:length(vect$vect)){vect$level[i] <- ifelse(vect$vect[i]==vect$vect[i-1], vect$level[i- 1],vect$level[i-1]+1)}
#create the list
monotone <- split(vect, f=vect$level)

现在,我想根据后续矩阵的vect$vect 值更改每个级别/矩阵的vect$vect 值。我猜这个问题包括索引元素和使用 for 循环,但我不知道该怎么做。 举个例子,我想改变vect$vect的值,这取决于后续是10。在这种情况下,该级别的vect$vect值应该乘以100,得到:

vect <- c(48,40,37,36,37,37,20,15,15,2400,2400,10,10,10)

任何帮助都会很棒!

【问题讨论】:

    标签: r list for-loop matrix


    【解决方案1】:

    我认为你可以先使用 R 中的因子来获得你的等级:

    vect_date <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14)
    vect <- c(48,40,32,36,37,37,20,15,15,24,24,10,10,10)
    vect <- as.data.frame(cbind(vect_date, vect))
    vect <- vect[order(vect$vect_date),]
    
    vect$level = factor(vect$vect,levels=unique(vect$vect))
    vect$level = as.numeric(vect$level)
    

    因此,如果我们想更改 vect 之前的值为 10 的级别,我们可以这样做:

    level_tochange = vect$level[vect$vect==10] - 1
    level_tochange
    [1] 8 8 8
    

    这告诉我们我们需要更改级别 == 8 的行。请注意,我使用 %in% 是因为在您有超过 2 个级别且 vect==10 的事件中,这仍然有效:

    rows_tochange = which(vect$level %in% level_tochange)
    vect$vect[rows_tochange] = vect$vect[rows_tochange]*100
    vect
    
       vect_date vect level
    1          1   48     1
    2          2   40     2
    3          3   32     3
    4          4   36     4
    5          5   37     5
    6          6   37     5
    7          7   20     6
    8          8   15     7
    9          9   15     7
    10        10 2400     8
    11        11 2400     8
    12        12   10     9
    13        13   10     9
    14        14   10     9
    

    【讨论】:

      猜你喜欢
      • 2018-06-08
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      • 2021-11-13
      相关资源
      最近更新 更多