gpt4 book ai didi

string - R:引用数据框将列名作为变量返回,而不是字符串(对于子集)

转载 作者:行者123 更新时间:2023-12-04 02:43:17 26 4
gpt4 key购买 nike

有没有办法将数据框的列名作为变量引用,而不是字符串(在 R 中)?假设我想获取数据框 df 的第一列名称。代码 colnames 返回...

> colnames(df)[[1]]
[1] "colname1"

我问的原因是我很难将函数子集推广到任何数据框。假设我希望在具有已知条件的数据框上执行条件子集,但我不知道运行时的列名(只是列号)。例子——

> df<-data.frame( x=c(1:3), y=c(4:6))
> df.sub <- subset(df, df$y >5 )

但是假设我在运行时不知道 df 的列名,只知道它的列号 2。函数调用

> df.sub <- subset(df, colnames(df)[[2]] >5 )

不起作用,因为 colnames 返回一个字符串,而 subset 是“智能”的,并在 df 中查找对象名称。有解决这个问题的好方法吗?我可以改用 [ ,但我觉得问题是一样的。

最佳答案

您应该能够成功地为名称或索引号使用双方括号:

> subset(df, df[["y"]] > 5)
x y
3 3 6
> subset(df, df[[2]] > 5)
x y
3 3 6

但是,请注意subset 帮助页面中的以下内容:

Warning

This is a convenience function intended for use interactively. For programming it is better to use the standard subsetting functions like [, and in particular the non-standard evaluation of argument subset can have unanticipated consequences.


而且,为了给出一些不好的建议,您还可以使用 get:

> subset(df, get(colnames(df)[2]) > 5)
x y
3 3 6

正如@Roland 在评论中指出的那样,大多数 R 用户实际上会使用以下内容:

> df[df[[2]] > 5, ]
x y
3 3 6

关于string - R:引用数据框将列名作为变量返回,而不是字符串(对于子集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19409746/

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