【发布时间】:2018-09-03 01:35:39
【问题描述】:
如何为具有 2 个向量的数据框创建布尔变量?我希望布尔变量识别vector1中的哪个对象大于vector2中的对象。
【问题讨论】:
标签: r
如何为具有 2 个向量的数据框创建布尔变量?我希望布尔变量识别vector1中的哪个对象大于vector2中的对象。
【问题讨论】:
标签: r
要创建一个布尔或逻辑向量来测试两个向量(或数据框中的列),我们可以设置一个逻辑测试,例如a > b,它将返回TRUE 或FALSE。
可以根据下面的示例将此输出分配给向量本身。
# set seed for random data
set.seed(123)
# create data frame with two random vectors
df <- data.frame(a = rnorm(10),
b = rnorm(10))
# create a logical (boolean) vector
df$c <- (df$a > df$b)
print(df)
#> a b c
#> 1 -0.56047565 1.2240818 FALSE
#> 2 -0.23017749 0.3598138 FALSE
#> 3 1.55870831 0.4007715 TRUE
#> 4 0.07050839 0.1106827 FALSE
#> 5 0.12928774 -0.5558411 TRUE
#> 6 1.71506499 1.7869131 FALSE
#> 7 0.46091621 0.4978505 FALSE
#> 8 -1.26506123 -1.9666172 TRUE
#> 9 -0.68685285 0.7013559 FALSE
#> 10 -0.44566197 -0.4727914 TRUE
由reprex package (v0.2.0) 于 2018 年 9 月 3 日创建。
【讨论】:
如果我们比较两列的对应元素
with(df1, vector1 > vector2)
用于将每个元素与所有其他元素进行比较
with(df1, outer(vector1, vector2, `>`))
或者
with(df1, t(sapply(vector1, `>`, vector2)))
【讨论】:
df1 <- data.frame(vector1 = c(4, 3, 7, 5, 9), vector2 = c(3, 9, 8, 14, 6)),那么预期的输出应该是什么