【问题标题】:Create a logical vector in R and use which function在 R 中创建一个逻辑向量并使用哪个函数
【发布时间】:2013-02-02 05:40:03
【问题描述】:

我有一个包含三列的数据集。第一列是类型,第二列是面积,第三列是价值。我想编写一个逻辑向量,使得类型 =1 ,面积 = 3 和价值 = 6。我能够使用子集创建数据框,但我无法创建逻辑向量。

hello <- read.csv("type.csv")
hello1 <- subset(hello, type==1 & area ==3 & worth ==6)

value 列中有许多 NA 值。 数据集为https://www.dropbox.com/s/gjjwmnr8uxmy18y/type.csv

谢谢。

贾巴巴

【问题讨论】:

  • 试试:with(hello, hello[type == 1 &amp; area == 3 &amp; worth == 6, ])
  • @泰勒,感谢您的回复。实际上我需要做的是分配一个逻辑向量来标识 type==1 、 area ==3 和 value ==6 。之后,当逻辑向量为真时,我需要应用 which() 函数来识别数据帧的行。
  • which(with(hello, type == 1 &amp; area == 3 &amp; Worth == 6))
  • 感谢 Arun,完美运行。
  • 使用堆栈溢出做作业?

标签: r


【解决方案1】:

所以问题仍然得到回答:

which(with(hello, type == 1 & area == 3 & Worth == 6))

请记住,您可以将其用作:

which(hello$type1 == 1 & hello$area == 3 & hello$Worth == 6)

也是。但是,当您有更多语句要检查时,with 会派上用场,因为它允许您检查时无需每次都输入 hello$

【讨论】:

  • 是的,已回答。谢谢。
  • 如果像 OP 建议向量将用于索引,那么你不需要which。事实上,甚至建议不要使用它;我至少想到了一个可能导致麻烦的例子,它是负索引:hello[-which(bool.vec), ]hello[!bool.vec, ] 不同,而bool.vec 到处都是FALSE
【解决方案2】:

虽然已经接受了一个答案,但 OP 要求创建一个逻辑向量,并且答案

which(hello$type1 == 1 & hello$area == 3 & hello$Worth == 6)

返回符合这些条件的行。要改为返回逻辑向量,只需使用 which 的参数,即

hello$type1 == 1 & hello$area == 3 & hello$Worth == 6

【讨论】:

    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多