我需要一种更灵活的方法来将多个列中的值提取到“y”列中,其中“x”中的最后一个字符==列名称的最后一个字符。我可以使用嵌套来实现此目的ifelse(),但列总数未知。
有多个以相同整数结尾的列名称,因此我预计需要一个字符串前缀。在下面的示例中,我对“a”列感兴趣。
在这个阶段,我更喜欢保留原始列顺序的字符串匹配方法,但对“a”列重新排序的列索引方法也很有趣。我进行了搜索,但找不到我可以适应的解决方案。
library(dplyr)
library(stringr)
# Sample data
df <- data.frame(a2 = c(rep(letters[1:2], 2), "a"),
a3 = c(rep(letters[2:1], 2), "a"),
a1 = c(rep(letters[1:2], each = 2), "a"),
b1 = 1:5,
b2 = 6:10,
x = paste0("x", c(1,2,2,3,4)))
# Inflexible approach
df %>% mutate(y = ifelse(str_sub(x, start = -1) == 1, a1,
ifelse(str_sub(x, start = -1) == 2, a2,
ifelse(str_sub(x, start = -1) == 3, a3, NA))))
# Result
a2 a3 a1 b1 b2 x y
1 a b …Run Code Online (Sandbox Code Playgroud) 获取所有行的最佳方法是什么,这些行将在主键级联上删除?
目前我们知道使用主键作为外键的表列表,现在可以使用简单的选择查询
在大型项目中,将来当添加新表并由任何开发人员使用主键创建外键时。他们可能会错过级联删除之前必须完成的业务逻辑。因此,如果自动发现受影响的行,则可以进行相应处理。
我正在寻找 sql 中的一些功能,它表示在我们启动删除查询之前这些行将受到影响。sql引擎以某种方式维护关系的映射以级联删除。
我们能否以某种方式利用级联删除关系来获取选择查询中关系中的所有行。
编辑:
要求是向用户显示在任何时间点哪些行将被删除。
我正在寻找 sql 中的解决方案,以便即使将来进行架构更改,也不需要使用另一种后端语言来实现此用例。
我在创建 vite 应用程序后运行服务器时遇到错误,请帮助我解决此问题。
我正在学习 Threejs,刚刚创建了一个使用 vanilla 框架和 javascript 作为语言的 vite 应用程序,一切都很顺利,但 npm run dev 显示了我似乎无法解决的错误。
我尝试在删除后安装 .json 文件,但仍然不行。
我正在使用 antd 的上传组件。无论出于何种原因,即使提交图像成功更改,它也会将上传文件显示为红色。我尝试从 beforeUpload 返回 false,但如果我在使用 antd-img-crop 时执行此操作,裁剪功能将不起作用。如何在\xc2\xa0上传文件时去掉红色\xc2\xa0,同时保留ant-img-crop功能?\n如何让上传图片时边框不变成红色?
\n\n这是代码
\nconst Setting = () => {\n const [memberData, setMemberData] = useState<MemberDataProps>();\n const [name, setName] = useState(\'\');\n const [email, setEmail] = useState(\'\');\n const [phoneNumber, setPhoneNumber] = useState(\'\');\n const [expiredDate, setExpiredDate] = useState(\'\');\n const [isPhoneInvalid, setIsPhoneInvalid] = useState(false);\n const [isSubscribe, setIsSubscribe] = useState(false);\n const [newPicture, setNewPicture] = useState<any[]>([]);\n\n\n const handleImageUpload = async (info: any) => {\n let fileList = [...info.fileList];\n fileList = fileList.slice(-1);\n\n fileList = fileList.map((file) => {\n if (file.response) …Run Code Online (Sandbox Code Playgroud) 考虑一个最小的例子:
signals <- tibble(
time = 1:20,
long = c(rep(0,10),rep(1,10)),
medium = c(rep(0,5),rep(1,5),rep(0,5),rep(1,5)),
short = c(rep(0,2),rep(1,2),rep(0,2),rep(1,2),rep(0,2),rep(1,2),rep(0,2),rep(1,2),rep(0,2),rep(1,2)),
random = c(sample(2,20,TRUE)-1)
)
signals %<>%
pivot_longer(!time,names_to = "signals")
Run Code Online (Sandbox Code Playgroud)
我想使用 ggplot 来显示各种 1 或 0 的信号。我研究了点图和条形图,但不知何故我一直把它们变成直方图,这是我不想要的。我将如何创建一个通常看起来像这样的图,但不是直方图:
我刚刚更新到 Android Studio HedgeHog,对于任何项目,我在编译时都会收到此消息:
“只读集合不支持操作”
它不会开始编译,而是直接显示此消息。
我使用的是 Windows 11 专业版。
我试过 :
它适用于以前版本的 Android Studio Girafe。
我正在为登录页面编写测试:
cy.visit(loginUrl);
// type username and password
cy.get('#user').type(email);
cy.get('#password').type(password);
cy.get('#submit').click();
Run Code Online (Sandbox Code Playgroud)
但我可以看到,尽管文本框可见,但在加载背景图像之前,cypress 不会开始测试。背景图像有点大,加载需要时间,因此测试必须等待很长时间才能完成登录。
如果文本框可用,如何使 Cypress 不等待背景图像加载并开始输入?
我遇到过 Oracle 23c 的奇怪行为。据我了解,ROUND 函数中缺少第二个参数应该与显式放置“DAY”参数完全相同。
SELECT TO_DATE('2024-06-26 15:02:18','YYYY-MM-DD HH24:MI:SS') AS result
, ROUND(TO_DATE('2024-06-26 15:02:18','YYYY-MM-DD HH24:MI:SS') ) AS default_result
, ROUND(TO_DATE('2024-06-26 15:02:18','YYYY-MM-DD HH24:MI:SS') , 'DAY') AS day_explicit
;
Run Code Online (Sandbox Code Playgroud)
根据 Oracle文档“如果省略 fmt,则日期将四舍五入到最近的一天”,“DAY”参数仅表示“DAY”。
是否有可能以编程方式知道 git 将使用哪个编辑器?这样的事情可能吗?
$git which editor
/usr/bin/nano
Run Code Online (Sandbox Code Playgroud)
基本上,我只想为 git 提交消息调用自定义编辑器。因此,如果文件名是“.git/COMMIT_EDITMSG”,我将调用其他内容,否则我想回退到默认的 git 编辑器。
我知道 git 使用$GIT_EDITOR, core.editor, $VISUAL,$EDITOR来选择编辑器。但这一切都不存在,我不知道该怎么办。这里说,它使用vi. 但在我的机器上,它使用nano. 因此,对其进行硬编码并不真正可靠。
那么,如何知道 git 将以编程方式使用哪个编辑器呢?如果不是直接从 git 获取,还有其他解决方法吗?
我有一个非常大的范围来迭代并找到满足特定约束的第一个元素。这已经可以在 Ruby 中高效地完成。
# Runs until memory is exhausted _without_ lazy!
(1..).lazy.select { |i| i > 5 }.first
# => 6
Run Code Online (Sandbox Code Playgroud)
然而,在我的用例中,我想以范围的随机间隔开始迭代,如果到达范围末尾时没有元素通过检查,则从范围的开头继续(直到达到随机间隔)再次,如果需要的话)。通过将两个不同的“范围”合并为一个红宝石作为参考,我来到......
letter = ('b'..'y').to_a.sample
[*letter..'z', *'a'...letter].map { |c| c.capitalize }.join
# => "FGHIJKLMNOPQRSTUVWXYZABCDE"
Run Code Online (Sandbox Code Playgroud)
当然,我没有字母表作为迭代范围,这只是小规模的示例,对于我的用例来说是失败的。
*符并不懒惰map不懒通过更多的谷歌搜索和实验,我得出了以下结构:
# lazy version of previous alphabet example
[(letter..'z'), ('a'...letter)].lazy.flat_map { |r| r.each.lazy }.map { |c| c.capitalize }.force.join
=> "FGHIJKLMNOPQRSTUVWXYZABCDE"
# Comparable to what I want
start = rand(2**64)
# => 15282219649142738977
[(start..2**64), (0...start)].lazy.flat_map { |r| …Run Code Online (Sandbox Code Playgroud)