【问题标题】:Getting the difference between 2 adjacent elements of a named vector in R获取R中命名向量的2个相邻元素之间的差异
【发布时间】:2021-02-28 10:39:53
【问题描述】:

我想知道如何获得下面res 输出的每一行(第 2 个元素 - 第 1 个元素、第 3 个元素 - 第 2 个元素等)中每 2 个相邻数字之间的差异(例如,使用 diff())?

library(effects)

dat <- read.csv('https://raw.githubusercontent.com/rnorouzian/e/master/dat2.csv')

fit <- lm(math ~ time*ses + I(time^2)*ses, data = dat)

(res <- allEffects(fit, xlevels=list(ses=0:1, time=0:7))[[2]])

   time
ses         0         1        2        3        4        5        6        7
  0 0.4986515 0.8179641 1.093079 1.323995 1.510713 1.653233 1.751555 1.805679 # diff bet. each two adjacent points
  1 0.5326918 0.9433164 1.304973 1.617661 1.881381 2.096133 2.261917 2.378733 # diff bet. each two adjacent points

【问题讨论】:

  • 示例t(apply(mtcars[1:3,],1,diff)).
  • @user2974951,似乎在这里不起作用。 res 不是 data.frame 或矩阵。
  • 您是否尝试将其强制转换为矩阵或 df?

标签: r list function dataframe vector


【解决方案1】:

您可以使用summary(res)$effect 获取您感兴趣的矩阵,然后使用applydiff 或直接减去列。

mat <- summary(res)$effect
t(apply(mat, 1, diff))
mat[, 2:ncol(mat)] - mat[, 1:(ncol(mat) - 1)]

# time
#ses         1         2         3         4        5          6          7
#  0 0.3193126 0.2751144 0.2309163 0.1867182 0.142520 0.09832187 0.05412374
#  1 0.4106246 0.3616564 0.3126883 0.2637202 0.214752 0.16578391 0.11681577

【讨论】:

    猜你喜欢
    • 2014-03-09
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 2017-09-29
    相关资源
    最近更新 更多