我正在使用以下可能适合我的情况的可重现示例。如果可能的话,我一直在尝试执行
mpg
和disp, hp, vs
之间的偏相关分析。我不确定pcor function
是否可以做到这一点,但我准备的代码如下:
list = list(mtcars, mtcars)
list = lapply(list, function(x) x %>%
mutate(gear = as.factor(gear)))
library(ggm)
lapply(list, function(x) x %>%
group_by(gear) %>% pcor(c(mpg, disp, hp, vs), var(x)))
我不确定它出了什么问题,但我收到错误:
Error in pcor(., c(mpg, disp, hp, vs), var(x)) : unused argument (var(x))
您有什么建议来解决这个问题? MoDo 您建议使用不同且分离的数据集来运行此分析,但使用不同的迭代方法(我想使用这种方式)?
谢谢
你的语法在这里没有任何意义。
ggm::pcor
函数接受两个参数,但您传递了三个参数(请记住,当您使用管道运算符时,最后一个计算的结果将作为以下函数的第一个参数传递)。
文档还说第一个参数
u
应该是:
长度> 1的整数向量。前两个整数是必须计算其相关性的变量的索引。向量的其余部分是 调理套装。
事实证明,这并不完全正确,因为该示例继续向参数 u
提供由
列名称组成的向量,该向量用于对传递给参数
S
的矩阵的行和列进行子集化
.
底线是,如果您想要列表中每个数据帧的每个级别
gear
的部分相关性,您将需要执行以下操作:
library(ggm)
lapply(list, function(x) {
sapply(split(x, x$gear), function(x) {
pcor(u = c('mpg', 'disp', 'hp', 'vs'), S = var(x))
})
})
#> [[1]]
#> 3 4 5
#> -0.3572209 -0.7089970 -0.2900153
#>
#> [[2]]
#> 3 4 5
#> -0.3572209 -0.7089970 -0.2900153