gpt4 book ai didi

r - 在 R 中进行子集化时是否需要包含 `which` 或者我可以进行逻辑测试吗?

转载 作者:行者123 更新时间:2023-12-04 11:18:07 25 4
gpt4 key购买 nike

假设我有一个数据框 df并希望根据 a 列的值对其进行子集化。

df <- data.frame(a = 1:4, b = 5:8)
df

是否有必要包含 which括号中的功能还是我可以只包含逻辑测试?
df[df$a == "2",]
# a b
#2 2 6
df[which(df$a == "2"),]
# a b
#2 2 6

它似乎以任何方式工作......我在一个大数据框中得到了一些奇怪的结果(即,返回空行以及正确的行)但是一旦我清理了环境并重新运行我的脚本它就可以正常工作。

最佳答案

df$a == "2"返回一个逻辑向量,而 which(df$a=="2")返回索引。如果向量中有缺失值,第一种方法会将它们包含在返回值中,但 which将排除它们。

例如:

x=c(1,NA,2,10)

x[x==2]

[1] NA  2

x[which(x==2)]

[1] 2

x==2

[1] FALSE    NA  TRUE FALSE

which(x==2)

[1] 3

关于r - 在 R 中进行子集化时是否需要包含 `which` 或者我可以进行逻辑测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43691805/

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