gpt4 book ai didi

r - 使用带有 $ 的逻辑向量对数据帧进行子集

转载 作者:行者123 更新时间:2023-12-04 17:43:29 24 4
gpt4 key购买 nike

我无法理解 使用原因 行为 $子集 data.frame 中的符号在 R 中。以下示例是在我正在上的初学者类(class)中介绍的(不是与现场教授一起,所以不能在那里提问):

temp_mat <- matrix(1:9, nrow=3)
colnames(temp_mat) <- c('a', 'b', 'c')
temp_df <- data.frame(temp_mat)

调用 temp_df显然输出:
  a b c
1 1 4 7
2 2 5 8
3 3 6 9

类(class)中给出的例子是:
temp_df[temp_df$c < 10]

哪些输出:
  a b c
1 1 4 7
2 2 5 8
3 3 6 9

使用原因问题:类(class)指示 $用于部分匹配,即 x$yx[["y", exact=FALSE]] 的精确替代品.为什么我们要在这里使用部分匹配运算符?我们是否使用它是因为我们确信在我们的 temp_df 中没有其他类似于“c”的列可能会被错误地拾取?此外,如何测量部分匹配?匹配字符的最低百分比或其他什么?似乎有一个 getElement如果使用具有未知或相似列名的数据集(例如,家庭电话与手机,这些会被视为有效的部分匹配吗?)

行为问题:出现上面的例子 temp_df[temp_df$c < 10]是说“从 temp_df 返回元素的子集,其中 c 列小于 10”,并且因为所有 c 列元素都符合条件,所以返回整个数据帧。我的解释显然是错误的,因为 temp_df[temp_df$c < 9]返回:
  a b
1 1 4
2 2 5
3 3 6

尽管 c 列的第 1 行和第 2 行元素确实满足小于 9 的标准,但忽略了整列。我的问题变成了双重问题:逻辑向量实际上在说什么/做什么?我将如何编写我对“从 temp_df 中返回 c 列小于 9 的元素子集”的解释并让它返回:
  a b c
1 1 4 7
2 2 5 8

因为在我看来,元素 1 和 2(第 1 行和第 2 行)满足该条件,因为它们的 c 列值小于 9,因此应该返回。

最佳答案

尝试逐步分解操作。

temp_df$c < 9

给出如下向量:
[1]  TRUE  TRUE FALSE

当您以您显示的方式传递此向量时: temp_df[c(TRUE, TRUE, FALSE)]具有对列进行操作的效果。

想一想 data.frame作为一个列表,列名作为键,列内容作为向量值。该操作保留 TRUE 键(即列)并删除 FALSE。

逗号用于将向量标记为行索引。保留前两行,删除最后一行。因此, temp_df[c(TRUE, TRUE, FALSE), ]给出:
  a b c
1 1 4 7
2 2 5 8

关于r - 使用带有 $ 的逻辑向量对数据帧进行子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49519774/

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