使用 lares:: corr_var 函数在 for 循环中分配变量的问题

问题描述 投票:0回答:1

我想测试数据帧的第一列与其最后一列的相关性。我正在将其实现为一个更大的函数,所以我永远不知道变量名称。因此我需要一个自动化的解决方案,但我找不到。我尝试了以下方法:

library(lares)

data("iris")

corlist <- list()
for(i in 1:2){
  corlist[i] <- corr_var(df = iris,
                         var = names(iris)[i],
                         ignore = names(iris)[c(1:2, 5)[-i]],
                         max_pvalue = 0.05,
                         top = 50)
}

返回:

Error in corr_var(df = iris, var = names(iris)[i], ignore = names(iris)[c(1:2)[-i]],  : 
  Not a valid input: names(iris)[i] was transformed or does not exist.

我尝试使用

get()
paste()
noquote()
,但都不起作用。我也尝试像
iris[, i]
一样插入列本身,但我总是收到相同的错误。唯一有效的似乎是例如
var = Sepal.Length
等等,但这些不能循环。 \

r correlation
1个回答
0
投票

当我们等待

lares::corr_var()
的更新时,这应该对您有用:

corlist <- list()
for(i in 1:2) {
  var_name <- names(iris)[i]
  var_sym <- rlang::sym(var_name)  # Construct symbol from string
  corlist[[i]] <- corr_var(
    df = iris,
    var = !!var_sym,  # Unquote and evaluate symbol
    ignore = names(iris)[c(1:2, 5)[-i]],
    max_pvalue = 0.05,
    top = 50
  )
}
© www.soinside.com 2019 - 2024. All rights reserved.