gpt4 book ai didi

r - 如何使用变量名提取数据框的列索引?

转载 作者:行者123 更新时间:2023-12-01 23:12:24 26 4
gpt4 key购买 nike

我想使用变量名提取数据框变量的列索引。

这里是 df 例如:

>df 

Mean Var Max
a 1 0.5 3
b 1.5 0.4 4
c 0.7 0.3 2.5
d 0.3 0.1 0.5

我想“扭转”这个:

> variable.names(df[2])
[1] "Var"

用类似的东西:

> variable.names(df$Var)
NULL

但是得到“2”而不是“NULL”

这是我的全部问题:

my_fct ← function(data, v_cont, v_cat){  
for (i in 1:nlevels(as.factor(v_cat))){
sub <- subset(data , v_cat == levels(as.factor(v_cat))[i])
sub_stat <- c(levels(as.factor(v_cat))[i],
mean( **sub[,COLINDEX(v_cat)**] , na.rm = TRUE)
mat_stat <- rbind(mat_stat, sub_stat)

sub[,COLINDEX(v_cat) 是需要解决的问题。如何在我刚创建的新矩阵中选择初始变量?

注意:v_cat 和 v_cont 具有以下形式:df$variable1 , df$variable2

感谢帮助

最佳答案

具体情况还不完全清楚。但是根据提供的功能,它可以通过传递列名和 [[ 子集来重写,而不是传递 df$variable1df$variable2

my_fct <- function(data, v_cont, v_cat){  
mat_stat <- NULL
for (i in 1:nlevels(as.factor(data[[v_cat]]))){
sub <- subset(data , data[[v_cat]] ==
levels(as.factor(data[[v_cat]]))[i])
sub_stat <- c(levels(as.factor(data[[v_cat]]))[i],
mean(sub[,v_cat] , na.rm = TRUE)
mat_stat <- rbind(mat_stat, sub_stat)

}
return(mat_stat)
}

-测试

my_fct(df, "variable1", "variable2")

如果输入是df$variable1df$variable2,使用OP的原始函数,一个选项是使用deparse(subsitute到捕获参数,使用 sub 提取列名并将其用作列名

my_fct <- function(data, v_cont, v_cat){ 
nm1 <- sub(".*\\$", "", deparse(substitute(v_cat)))
mat_stat <- NULL
for (i in 1:nlevels(as.factor(v_cat))){
sub <- subset(data , v_cat == levels(as.factor(v_cat))[i])
sub_stat <- c(levels(as.factor(v_cat))[i],
mean(sub[, nm1] , na.rm = TRUE)
mat_stat <- rbind(mat_stat, sub_stat)
}

return(mat_stat)

}

-测试

my_fct(df, df$variable1, df$variable2)

关于r - 如何使用变量名提取数据框的列索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69596696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com