【发布时间】:2019-07-29 14:19:34
【问题描述】:
我正在尝试做一些我认为很简单的事情,但我失败了。我想根据另一个对象(一个单独的数据框)的值来扩展一个向量。这是一个可重现的示例:我有向量 v1,其中包含值 {1,2,3}。如果 iris 数据框中的列 Species 包含字符串“setosa”,我想添加字符串 {"moon", "sun"}。我试过了:
v1 <- c(1,2,3)
v1 <- c(v1, c("moon", "sun"))["setosa" %in% iris$Species]
[1] "1" "2" "3" "moon" "sun"
这行得通,正如您从上面的输出中看到的那样。但是如果不满足条件,我会得到一个空向量,而不是原来的 v1(即只是 {1,2,3}):
v1 <- c(v1, c("moon", "sun")) ["nonword" %in% iris$Species]
character(0)
我也试过了:
v1 <- ifelse("setosa" %in% iris$Species, c(v1, c("moon", "sun")), v1)
但这会返回:
[1] "1"
对我能做什么有什么建议吗?如果问题非常基本,我很抱歉,但我一直在寻找以前帖子中的答案,但我无法解决任何问题。
谢谢!
【问题讨论】:
-
这里
foo是什么 -
@akrun,对不起,foo = v1。我清理了帖子的示例,但忘记进行替换。我会在几秒钟内修复它。
-
@akrun,您的解决方案也有效(刚刚尝试过)。我标记了另一个,因为它更简洁:它只需要一行代码,并且不需要构建我不会在脚本的其他地方使用的函数(这是一次性问题)。感谢您的帮助!