r - 是否可以根据行范围和 r 中的逻辑条件对 data.frame 进行子集化?

标签 r

<分区>

在 base r 中,我可以根据行范围对 data.frame 进行子集化:

mtcars[1:5,]

或者我可以根据逻辑条件进行子集:

mtcars[mtcars$cyl==6,]

但我似乎无法做到这两点:

mtcars[1:5 & mtcars$cyl==6,]

Warning message: In 1:5 & mtcars$cyl == 6 : longer object length is not a multiple of shorter object length

还有其他方法吗?

用例是用 LaF 包加载一个巨大的 .csv,它允许使用类似于 base r 的命令进行过滤,但是使用行范围比使用条件加载东西要快得多,并且添加多个条件意味着我有时需要等待一天才能加载数据。

最佳答案

如果您以交互方式工作,我会使用 subset

subset(mtcars[1:5,], cyl==6)
#                mpg cyl disp  hp drat    wt  qsec vs am gear carb
#Mazda RX4      21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag  21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#Hornet 4 Drive 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1

或者存储中间结果。

tt <- mtcars[1:5,]
tt[tt$cyl==6,]
rm(tt)

或者,您可以链接两个条件。

mtcars[(1:5)[mtcars$cyl[1:5]==6],]
#mtcars[1:5,][mtcars$cyl[1:5]==6,] #Alternative
#mtcars[1:5,][mtcars[1:5,]$cyl==6,] #Alternative

或存储 1:5 我在这种情况下推荐的内容。

i <- 1:5
mtcars[i[mtcars$cyl[i]==6],]
rm(i)

关于r - 是否可以根据行范围和 r 中的逻辑条件对 data.frame 进行子集化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63774184/

相关文章:

r - ggplot2 geom_boxplot 的用户定义参数

r - 如何对表示为字符串的值和运算符执行算术运算?

r - 如何将 “flatten” 或 “collapse” 2D 数据帧转换为 R 中的 1D 数据帧?

r - 多维尺度

r - 设置默认放大 plotly

r - 按多个变量的因子水平汇总统计

r - 与时间融化

r - 在使用适用于 macOS 的 GitHub Actions 进行测试之前如何安装 X11?

删除行和列名称 - heatmap.2

r - ggvis 绘图上的交互式日期时间输入