小编Nic*_*as2的帖子

R 中的特殊任务

我的问题只是为了了解 R 语言的一项功能是如何工作的。在任何好的 R 版本附带的“R 语言定义”中,有一些内容解释了例如向量元素的设置如何与看起来像赋值但并不那么简单的东西一起工作:

x[3:5] <- 13:15
Run Code Online (Sandbox Code Playgroud)

是一个快捷方式:

`*tmp*` <- x
x <- "[<-"(`*tmp*`, 3:5, value=13:15)
rm(`*tmp*`)
Run Code Online (Sandbox Code Playgroud)

我不明白的是为什么使用中间符号*tmp*而不是直接用 setter 函数来做这件事的原因。

x <- "[<-"(x, 3:5, value=13:15)
Run Code Online (Sandbox Code Playgroud)

到现在为止,我一直怀疑它与垃圾收集有关,但由于这个随着 v4 发生了显着变化,而且文档没有改变,我现在怀疑我错了。有人可以解释一下吗?

谢谢

r

7
推荐指数
1
解决办法
78
查看次数

如何在每一侧使用多个变量在 R 中进行模糊连接

我想加入两个数据框:

a <- data.frame(x=c(1,3,5))
b <- data.frame(start=c(0,4),end=c(2,6),y=c("a","b"))
Run Code Online (Sandbox Code Playgroud)

(x>start)&(x<end)为了得到这样的结果,条件如下:

#  x    y
#1 1    a
#2 2 <NA>
#3 3    b
Run Code Online (Sandbox Code Playgroud)

我不想制作一个潜在的大型笛卡尔积,然后只选择与条件匹配的几行,我想要一个使用 tidyverse 的解决方案(我对使用 SQL 的解决方案不感兴趣,这将是失败的坦白) . 我想到了 'fuzzyjoin' 包,但我找不到适合我需要的例子:申请条件的函数只有两个参数。我还尝试将“开始”和“结束”放入一个参数中data.frame(z=I(purrr::map2(b$start,b$end,list)),y=b$y) # z y #1 0, 2 a #2 4, 6 b

但尽管数据看起来不错,但fuzzy_left_join 不接受。

我寻找在更一般情况下工作的解决方案(LHS 上的 n 个变量,RHS 上的 m,不一定是具有任意条件的数字)。

更新

我还希望能够表达条件,例如(x=start+1)|(x=end+1)在此处提供:

#   x  y
#1  1  a
#2  3  a
#3  5  b
Run Code Online (Sandbox Code Playgroud)

merge fuzzy-search r fuzzyjoin

5
推荐指数
2
解决办法
1695
查看次数

标签 统计

r ×2

fuzzy-search ×1

fuzzyjoin ×1

merge ×1