向量R中的结构数

向量R中的结构数,r,R,我尝试根据y列中的值对R中的值进行子集,如下所示: 我有这样的数据集“data”: data <- data.frame(y = c(0,0,2000,1500,20,77,88), a = "bla", b = "bla") 以某种方式循环,以尽可能少的运行时间,而不是直接在公式中硬编码。有什么想法吗 列表应仅包含“!=”操作: [0, 77] 还有“我将回答你原来的问题,因为它更有趣。我希望你不会介意 假

我尝试根据y列中的值对R中的值进行子集,如下所示:

我有这样的数据集“data”:

data <- data.frame(y = c(0,0,2000,1500,20,77,88),
                   a = "bla", b = "bla")
以某种方式循环,以尽可能少的运行时间,而不是直接在公式中硬编码。有什么想法吗

列表应仅包含“!=”操作:

[0, 77]

还有“我将回答你原来的问题,因为它更有趣。我希望你不会介意

假设您有要应用于数据的值和运算符:

my.operators <- c("!=","<","!=")
my.values <- c(0,1000,77)
如您所见,我们得到了每个值、运算符对的逻辑向量列表

为了更好地理解这里发生的情况,只考虑每个向量的第一个值:

get("!=")(data$y,0)
[1] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
现在我们可以使用
Reduce

Reduce(`&`,lapply(my.values,function(x) data$y!=x))
[1] FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
最后,将数据子集:

data[Reduce("&",Map(function(x,y)get(y)(data$y,x),my.values,my.operators)),]
   y   a   b
5 20 bla bla
7 88 bla bla

请提供一个示例,特别是通过粘贴
dput
的输出来包含一些示例数据。通常,使用矢量化方法来操作数据,例如
dplyr
数据。对于
循环,表
快。如果您想要特定的打印输出,您可以编写自己的
print
函数How do您知道要应用于数字向量的运算符吗?例如,如果值为
c(01000,77)
且运算符为
c(“!=”),则“谢谢您的评论。实际上只有一个带有”
get("!=")(data$y,0)
[1] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
Reduce(`&`,lapply(my.values,function(x) data$y!=x))
[1] FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
data[Reduce("&",Map(function(x,y)get(y)(data$y,x),my.values,my.operators)),]
   y   a   b
5 20 bla bla
7 88 bla bla