相关疑难解决方法(0)

在向量中查找多个元素的所有位置

假设我有以下向量:

x <- c(8, 6, 9, 9, 7, 3, 2, 5, 5, 1, 6, 8, 5, 2, 9, 3, 5, 10, 8, 2)
Run Code Online (Sandbox Code Playgroud)

如何找到哪些元素是8或9?

r vector r-faq

21
推荐指数
2
解决办法
4万
查看次数

仅基于一组值保留数据帧的某些行

我有一个带有ID列的数据框和几列值.我想仅根据该行中ID的值是否与另一组值匹配(例如,称为"keep")来保留数据帧的某些行.

为简单起见,这是一个例子:

df <- data.frame(ID = sample(rep(letters, each=3)), value = rnorm(n=26*3))
keep <- c("a", "d", "r", "x")
Run Code Online (Sandbox Code Playgroud)

如何创建一个新的数据框,其中的行只包含与keep相匹配的ID?我可以通过使用该which()函数只为一个字母执行此操作,但是使用多个字母我会收到警告消息和错误的返回.我知道我可以在数据框中运行for循环并以此方式推断,但我想知道是否有更优雅和有效的方法来解决这个问题.提前致谢.

r subset

9
推荐指数
1
解决办法
4万
查看次数

确定元素是否存在于向量中的最有效方法

我有几种算法取决于确定元素是否存在于向量中的效率.在我看来%in%(相当于is.element())应该是最有效的,因为它只返回一个布尔值.在测试了几种方法后,令我惊讶的是,这些方法到目前为止效率最低.以下是我的分析(随着矢量大小的增加,结果变得更糟):

EfficiencyTest <- function(n, Lim) {

    samp1 <- sample(Lim, n)
    set1 <- sample(Lim, Lim)

    print(system.time(for(i in 1:n) {which(set1==samp1[i])}))
    print(system.time(for(i in 1:n) {samp1[i] %in% set1}))
    print(system.time(for(i in 1:n) {is.element(samp1[i], set1)}))
    print(system.time(for(i in 1:n) {match(samp1[i], set1)}))
    a <- system.time(set1 <- sort(set1))
    b <- system.time(for (i in 1:n) {BinVecCheck(samp1[i], set1)})
    print(a+b)
}

> EfficiencyTest(10^3, 10^5)
user  system elapsed 
0.29    0.11    0.40 
user  system elapsed 
19.79    0.39   20.21 
user  system elapsed 
19.89    0.53   20.44 
user  system elapsed 
20.04    0.28   20.33 …
Run Code Online (Sandbox Code Playgroud)

optimization performance r vector

5
推荐指数
1
解决办法
1022
查看次数

R比较多个值与向量和返回向量

我有一个向量“A”,对于 AI 的每个元素,我想检查它是否等于第二个向量“目标”中的任何元素。我想要一个长度为 A 的逻辑值向量作为返回。

这里提到同样的问题。这是有关如何测试向量是否包含特定值的相关讨论,但我不知道如何将其应用于我的问题,因为我想要一个向量作为输出而不是单个布尔值。

这是示例代码:

#example data
A <- c(rep("A",4),rep(c("B","C"),8))
Targets <- c("A","C","D")
Run Code Online (Sandbox Code Playgroud)

我想要一个向量,它告诉我 A 的每个元素是否等于 Targets 中的至少一个元素。例如,这应该生成一个与以下内容相同的向量:

result <- c(rep("TRUE",4), rep(c("FALSE","TRUE"), 8))
Run Code Online (Sandbox Code Playgroud)

如果这是相关的,最终向量 A 将更长(大约 20000 个元素),并且向量目标将包含大约 30 个元素。

r

3
推荐指数
1
解决办法
7178
查看次数

对于R,我们在Python中使用'in'命令的替代方法是什么?

假设我在R中有一个数字向量.我想知道向量中是否存在特定的整数.我们可以使用'in'命令在python中轻松完成,if语句可能是.

我们在R中也有类似的东西吗?所以我不必使用for循环来检查我想要的整数是否存在于向量中?我尝试了以下,但似乎没有用.'normal'是数据帧,第二列是整数.

if (12069692 in normal[,2]) {print("yes")}
Run Code Online (Sandbox Code Playgroud)

说,

Error: unexpected 'in' in "if (12069692 in"
Run Code Online (Sandbox Code Playgroud)

if-statement r vector

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

R - 集合中包含的值

这可能是一个重复的问题,但我做了一些搜索,可能找不到合适的关键字来搜索...

是否有一个函数可以测试变量值是否包含在一组特定的值中?

例如,假设我有这个神奇的函数“包含”,我希望它具有以下属性:

contains(value = 5, set = c(2:6))会回来TRUE,哪里

contains(value = 5, set = c(2,3,4,6,7))会回来FALSE

显然,我可以创建这个函数,但我希望存在一个包或选项。

search r

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

标签 统计

r ×6

vector ×3

if-statement ×1

optimization ×1

performance ×1

r-faq ×1

search ×1

subset ×1