我想测试数据帧的第一列与其最后一列的相关性。我正在将其实现为一个更大的函数,所以我永远不知道变量名称。因此我需要一个自动化的解决方案,但我找不到。我尝试了以下方法:
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
等等,但这些不能循环。 \
当我们等待
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
)
}