相关疑难解决方法(0)

为什么`[`比`子集更好?

当我需要过滤data.frame,即提取满足特定条件的行时,我更喜欢使用该subset函数:

subset(airquality, Month == 8 & Temp > 90)
Run Code Online (Sandbox Code Playgroud)

而不是[功能:

airquality[airquality$Month == 8 & airquality$Temp > 90, ]
Run Code Online (Sandbox Code Playgroud)

我偏好有两个主要原因:

  1. 我发现代码从左到右读得更好.甚至那些对R一无所知的人也可以说出subset上面的陈述是做什么的.

  2. 因为列可以在select表达式中称为变量,所以我可以节省一些键击.在我上面的例子中,我只需输入airquality一次subset,但只输入三次[.

所以我过着幸福快乐,subset随处可见,因为它更短,读起来更好,甚至为我的R编码员提倡它的美丽.但昨天我的世界崩溃了.在阅读subset文档时,我注意到这一节:

警告

这是一种便于交互使用的便利功能.对于编程,最好使用像[的标准子集函数,特别是参数子集的非标准评估可能会产生意想不到的后果.

有人可以帮助澄清作者的意思吗?

首先,他们的意思是" 交互使用 "?我知道什么是交互式会话,而不是在BATCH模式下运行的脚本,但我不知道它应该有什么区别.

那么,请你解释一下" 论证子集的非标准评估 "以及为什么它是危险的,或许可以提供一个例子?

r subset filter r-faq

392
推荐指数
2
解决办法
9万
查看次数

如何组合多个条件以使用"OR"对数据帧进行子集化?

我在R中有一个data.frame.我想在两个不同的列上尝试两种不同的条件,但我希望这些条件具有包容性.因此,我想用"OR"来结合条件.当我想使用"AND"条件时,我已经使用了以下语法,并取得了很多成功.

my.data.frame <- data[(data$V1 > 2) & (data$V2 < 4), ]
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在上面使用'OR'.

conditional r dataframe

168
推荐指数
3
解决办法
47万
查看次数

数据表错误找不到函数“。”

我正在尝试运行以下代码。每当我尝试运行代码时,都会出现以下错误:Error in eval(expr, envir, enclos) : could not find function "." 如何修复?有人可以帮忙吗?

data(mtcars)
library(data.table)
mtcarsDT <- data.table(mtcars)
mtcarsDT[ mpg > 20,
        .(AvgHP = mean(hp),
        "MinWT(kg)" = min(wt * 453.6)), # wt lbs
        by = .(cyl, under5gears = gear < 5)
        ]
Run Code Online (Sandbox Code Playgroud)

这是会话信息

> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] data.table_1.9.2

loaded via a namespace (and not attached):
[1] digest_0.6.8 …
Run Code Online (Sandbox Code Playgroud)

r data.table

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

r ×3

conditional ×1

data.table ×1

dataframe ×1

filter ×1

r-faq ×1

subset ×1