gpt4 book ai didi

R 对数据框和变量的通用引用

转载 作者:行者123 更新时间:2023-12-02 03:35:38 25 4
gpt4 key购买 nike

我想知道如何引用数据框和变量通用。假设我有一个名为“s”的数据框,并且该数据框中有一个名为“Y”的变量。

常规 R 代码:

look = s$Y

我想做的事:

data = s

variable = Y

look = data$variable (which functions the same as look = s$Y)

有什么想法吗?我想这样做的原因是我的代码中有 s$Y ,稍后我可能想将 s 更改为 t (或 Y 对于其他变量),并且不想手动遍历我的所有代码,将 s$Y 替换为 t$Y 我需要更改的地方。

谢谢!

最佳答案

这就是$的原因- 运算符在函数定义中被认为是不好的做法,即它“将您锁定”到列名称的特定拼写。但是,您不会这样做:

variable = Y

相反,你要这样做:

variable = "Y"

这是因为第一个版本会导致 R 解释器出去并尝试识别符号 Y 的值。位于所谓的“搜索路径”中的某个位置,粗略地说,是自代码启动以来已被调用且仍在处理的所有函数和值。在第二个版本的情况下,“Y”是它自己的值,不需要进一步搜索。纠正了这个基本的困惑后,您现在就可以这样做

look <- data[[ variable ]]  # although using 'data' as a name is another "poor-practice"

R 将查找值 variable并在全局环境中找到它,返回字符“Y”并从数据集中提供名为“Y”的列 s 。在 R 中,列名不被视为第一类对象,而命名数据框则被视为。列的“名称”不正确 R names (即使它们被称为 colnames ).. $ - 运算符只是带有字符值的“[[”的简写。这是测试这一点的完整记录:

> s <- data.frame(Y=1:10, X=LETTERS[1:10]); data = s
>
> variable <- "Y"
>
> look1 <- data$Y; look2 <- data[["Y"]]
> identical(look1, look2)
[1] TRUE

R 的这种“非标准评估”(NSE)简写功能给新用户带来的困惑似乎是创建第一个 ggplot aes 的动机之一。功能以及后来封装的演变-dplyrtidyverse - bundle 。这些包允许使用不带引号的名称或标记来引用列标识。

关于R 对数据框和变量的通用引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50301521/

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