- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
看起来很简单,但是......好吧......
给定一个命名的正则表达式向量和一个数据表如下:
library(data.table)
regexes <- c(a="^A$")
dt <- fread("
a,A,1
a,B,1
b,A,1
")
输入数据表为
dt
# V1 V2 V3
# 1: a A 1
# 2: a B 1
# 3: b A 1
我对 regexes
中第一个元素的目标是:
如果 V1=="a"
设置 V3:=2
。 EXCEPT 当 V2
匹配相应的正则表达式 ^A$
时,则 V3:=3
。
(a
是 names(regexes)[1]
,^A$
是 regexes[1]
, 2
和 3
只是为了演示目的。我还得到了更多的名称和正则表达式来循环,数据集大约有 300.000 行。)
所以预期的输出是
# V1 V2 V3
# 1: a A 3 (*)
# 2: a B 2 (**)
# 3: b A 1
(*) 3
因为 V1
是 a
而 V2
(A
) 匹配正则表达式,
(**) 2
因为 V1
是 a
而 V2
(B
) 是不匹配 ^A$
。
我尝试循环遍历正则表达式并像这样通过管道传递子集:
for (x in seq(regexes))
dt[V1==names(regexes)[x], V3:=2][grepl(regexes[x], V2), V3:=3]
但是……
dt
# V1 V2 V3
# 1: a A 3
# 2: a B 2
# 3: b A 3 <- wrong, should remain 2
...它没有按预期工作,grepl
使用完整的 V2
列,而不仅仅是 V1=="a"
子集。我还尝试了一些其他的方法,这些方法有效,但花费的时间太长(即不是使用 data.table 的方法)。
问题:去这里的最佳数据表方式是什么?我正在使用 packageVersion("data.table")
‘1.9.7’
。
请注意,我可以走数据框路线,例如像这样
df <- as.data.frame(dt)
for (x in seq(regexes)) {
idx <- df$V1==names(regexes)[x]
df$V3[idx] <- 2
df$V3[idx][grepl(regexes[x], df$V2[idx])] <- 3 # or ifelse()
}
但是 - 当然 - 如果可能的话,我不想将 data.table 转换为 data.frame 然后再转换回 data.table。
提前致谢!
最佳答案
... it does not work as expected,
grepl
uses the completeV2
column, not just theV1=="a"
subset.
我会使用 stringi,它允许对正则表达式测试进行简单的矢量化:
library(stringi)
dt[V1 %in% names(regexes),
V3 := V3 + 1L + stri_detect(V2, regex = regexes[V1])
]
V1 V2 V3
1: a A 3
2: a B 2
3: b A 1
stri_detect
系列函数类似于来自 base 的 grepl
。
关于r 数据表 : Subsetting and assignment by reference in a for loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38084895/
正如主题中所述,我想要一个内部的有条件的子集 另一个内部表中的表。 让我们先看看老式的方式会是什么样子。 DATA: lt_hugeresult TYPE tty_mytype, lt_r
在采访中被问到这个问题,没有比生成所有可能的子集更好的答案了。示例: a = [4,2,5,7] k = 8 output = 4 [2],[4,2],[2,5],[4,2,5] 面试官试图暗示对数组
在采访中被问到这个问题,没有比生成所有可能的子集更好的答案了。示例: a = [4,2,5,7] k = 8 output = 4 [2],[4,2],[2,5],[4,2,5] 面试官试图暗示对数组
这是我写的代码:- #include #include #include int ctr = 0; void partition(int arr[], int n) { int i, j
在为子集()编写便利函数时,我遇到了一种奇怪的情况,即使用等效的逻辑语句会返回不同的子集。因此,例如: dat = data.frame(ttl.stims = c(4,4,8,8), change
我在子数组、子序列和子集之间有点困惑 如果我有 {1,2,3,4} 然后 子序列可以是 {1,2,4}或 {2,4}等等。所以基本上我可以省略一些元素但保持顺序。 子数组将是(比如大小为 3 的子数组
我的 subset 有一个奇怪的问题:它无法识别我的数据框中的变量。 例如,如果我想要数据帧 DF 中变量 v1 的摘要,我会得到: summary(DF$v1) Min. 1st Qu. M
给定一组正整数,我想要这些整数的子集,其总和是超过阈值的最小总和。 最佳答案 您的问题是 Subset Sum Problem 的变体并且是 NP 完全的。 为了了解原因,我们假设您有一个可以解决您的
题目地址: https://leetcode.com/problems/word-subsets/description/ 题目描述: Weare given two arrays A and B
考虑以下模拟片段: k 500) 错误发生在subset.matrix()这一行: else if (!is.logical(subset)) 这是应该报告给 R Core 的错误吗? 最佳答案 您
尝试根据不为空的值(从 SQL 借用)获取数据框的子集。尝试类似的东西: lately 1997 & myvalue != NA) 但这是不对的。姐妹们,有什么建议吗? 最佳答案 subset(da
我尝试使用以下代码对 iris 数据进行子集化 datanew = subset(iris, Species == c("setosa", "virginica"), select = -Specie
我有一个简单的数据模型如下: 实体 1:EmployeeAsset。它引用了 Employee 对象。 实体 2:EmployeeJobPosition。这也涉及到员工。它还具有对 JobPositi
您可能知道,SUBSET-SUM 问题被定义为确定一组整数的子集的总和是否等于指定的整数。 (还有另一种子集和的定义,其中一组整数之和为零,但我们现在使用这个定义) 例如 ((1,2,4,5),6)
目标是能够使用“子集表达式”(不是逻辑向量)作为用户定义函数的(可选)参数,并使用它来计算数据帧的子集。 x f(x, b == 2) Error in f(x, b == 2) (from fra
假设我得到 Dictionary>我想使用以下条件修剪它 一个item如果存在itemLarger != item,应该从字典中删除在字典中这样 item.Value.Union(new[] { it
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 6 年前。 Improve t
我有两个点云,在 3d 坐标中。一个是另一个的子集,包含更少的点。它们的比例相同。 我需要做的是找到两者之间的平移和旋转。我看过点云库,"Iterative closest point" , 和 Co
我正在构建一个程序来匹配交易。以下是我目前面临的问题的描述。我需要一些算法方面的帮助。 给定两组具有相似属性(交易日期、账户、代码)的交易 A 和 B,我需要找到 A 中的交易 a 和 B 中的 b
sum-subset problem状态: Given a set of integers, is there a non-empty subset whose sum is zero? 这个问题通常
我是一名优秀的程序员,十分优秀!