【发布时间】:2019-03-21 19:19:57
【问题描述】:
a <- c(4000,3500,3000)
b <- c(0.43,0.55,0.61)
test.data <- data.frame(a,b)
假设我想通过引用 3500 而不是按行/列获得值 0.55。我将如何实现这一目标?我想我可以将a 转换为字符串,然后以这种方式引用它,但是有没有办法引用数值来提取b 中的值?
编辑:感谢大家的精彩回复!
【问题讨论】:
a <- c(4000,3500,3000)
b <- c(0.43,0.55,0.61)
test.data <- data.frame(a,b)
假设我想通过引用 3500 而不是按行/列获得值 0.55。我将如何实现这一目标?我想我可以将a 转换为字符串,然后以这种方式引用它,但是有没有办法引用数值来提取b 中的值?
编辑:感谢大家的精彩回复!
【问题讨论】:
如果我理解得很好,你可以得到如下:
test.data$b[test.data$a == 3500]
[1] 0.55
我还想在您开始您的 R 之旅时向您介绍dplyr:
library(dplyr)
test.data %>%
filter(a == 3500) %>%
pull(b)
[1] 0.55
【讨论】:
使用data.table-
> setDT(test.data)[a==3500,b]
[1] 0.55
或
> setDT(test.data)[a==3500]$b
[1] 0.55
注意 - 首先,选项是首选,如评论中提到的@Frank。
【讨论】:
更多选项。
test.data[, "b"][test.data$a == 3500]
# [1] 0.55
test.data[test.data$a == 3500, "b"]
# [1] 0.55
【讨论】:
with(test.data, b[a == 3500])