我有此数据框:
df <- data.frame(x=c(1,2,3), y=c("a","b","c"))
所以我需要从链接到y
的列x==2
中获取值。我已经看到许多用户使用merge()
,但是还有另一种方法可以通过简单的方法,仅使用一个功能吗?
类似于lookup(df$x, x==2)
获得值“ b”的事物
通常,当您有两个要与许多列组合的数据框时,merge
是更好的方法。
在这里您可以使用match
:
df$y[match(2, df$x)]
#[1] "b"
或:
df$y[df$x == 2]
如果df$x
是类似于1:3
的序列,则可以直接使用[]
:
df$y[2]
#[1] "b"
或者在df$x
是带间隔的正整数的情况下:
lookup <- NA
lookup[df$x] <- df$y
lookup[2]
#[1] "b"
或者在df$x
可以用作character
的情况下>
lookup <- setNames(df$y, df$x) lookup["2"] # 2 #"b"
或使用
environment
通过使用其哈希值来加快搜索速度:
lookup <- list2env(as.list(setNames(df$y, df$x)))
lookup$"2"
#[1] "b"