gpt4 book ai didi

r - 在 R 中使用 switch() 替换向量值

转载 作者:行者123 更新时间:2023-12-03 12:02:17 25 4
gpt4 key购买 nike

这应该很简单,但即使在检查了所有文档和在线示例之后,我也不明白。

我想使用 switch() 来替换字符向量的值。

一个假的,极其简单的,可重现的例子:

test<-c("He is", "She has", "He has", "She is")

假设我想将“1”分配给包含动词“to be”的句子,将“2”分配给包含动词“to have”的句子。以下不起作用:
test<-switch(test,
"He is"=1,
"She is"=1,
"He has"=2,
"She has"=2)

错误信息:
+ + + + Error in switch(test, `He is` = 1, `She is` = 1, `He has` = 2, `She has` = 2) : 
EXPR must be a length 1 vector

我认为 EXPR 确实是一个长度为 1 的向量,那有什么问题呢?

我想也许 R 期望字符作为替换,但既没有将 switch() 包装成“as.integer”也没有以下工作:
test<-switch(test,
"He is"="1",
"She is"="1",
"He has"="2",
"She has"="2")

也许它没有矢量化,我应该做一个循环?是这样吗?会令人失望,考虑到 R 的强度是矢量化。提前致谢!

最佳答案

if 的矢量化形式是 ifelse :

test <- ifelse(test == "He is", 1,
ifelse(test == "She is", 1,
ifelse(test == "He has", 2,
2)))

或者
test <- ifelse(test %in% c("He is", "She is"), 1, 2)
switch基本上是一种写​​嵌套的方式 if - else测试。你应该想到 ifswitch作为控制流语句,而不是作为数据转换操作符。您可以使用它们来控制算法的执行,例如测试收敛性或选择要采用的执行路径。在大多数情况下,您不会使用它们直接操作数据。

关于r - 在 R 中使用 switch() 替换向量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31156957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com