gpt4 book ai didi

r - 在 R 子集设置中不使用子集()并以更简洁的方式使用 [ 来防止拼写错误?

转载 作者:行者123 更新时间:2023-12-04 15:43:16 25 4
gpt4 key购买 nike

使用数据帧时,通常需要一个子集。但是不鼓励使用子集函数。以下代码的问题是数据框名称重复了两次。如果您复制和粘贴代码,很容易不小心不更改第二次提及的 adf,这可能是一场灾难。

adf=data.frame(a=1:10,b=11:20)
print(adf[which(adf$a>5),]) ##alas, adf mentioned twice
print(with(adf,adf[{a>5},])) ##alas, adf mentioned twice
print(subset(adf,a>5)) ##alas, not supposed to use subset

有没有办法在不提及 adf 两次的情况下编写上述内容?不幸的是,使用 with() 或 inside(),我似乎无法访问整个 adf?

subset(...) 函数可以让它变得简单,但他们警告不要使用它:

这是一个旨在以交互方式使用的便利功能。对于编程来说,最好使用像 [ 这样的标准子集函数,特别是参数子集的非标准评估可能会产生意想不到的后果。

最佳答案

正如@akrun 所说,我会使用 dplyrfilter功能:

require("dplyr")
new <- filter(adf, a > 5)
new

在实践中,我没有发现子集符号 ( [ ]) 有问题,因为如果我复制一段代码,我会在 RStudio 中使用 find 和 replace 来替换所选代码中对数据框的所有提及。相反,我使用 dplyr 是因为新用户(和我自己!)更容易理解符号和语法,并且因为 dplyr 功能“做好一件事”。

关于r - 在 R 子集设置中不使用子集()并以更简洁的方式使用 [ 来防止拼写错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30015867/

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