我熟悉写ifelse()条语句,它们非常有用,但是当它们有多个条件时,它们似乎非常低效.我很好奇是否有更有效的方法来写它们.例如,如果我有下面的 struct

test <- data.frame(col = c("a", "b", "c", "d", "e"))
test$col <- factor(test$col)

  col
1   a
2   b
3   c
4   d
5   e

我可以写

test$col2 <- ifelse(test$col == "a" | test$col == "b" | test$col == "c", "x", "z")
test

  col col2
1   a    x
2   b    x
3   c    x
4   d    z
5   e    z

在这里,我基本上已经在Oifelse()语句中写了三次相同的东西(test$col ==).我如何编写代码才能使我只输入test$col ==一次?

我承认下面的说法是不正确的,也不起作用,但我对这样的事情的猜测是

test$col2 <- ifelse(test$col == c("a", "b", "c"), "x", "z")

OR

test$col2 <- ifelse(test$col == "a" | "b" | "c", "x", "z")

多次编写代码test$col ==是低效的.在这样的ifelse()声明中,这是可以避免的吗?

推荐答案

您可以try :

test <- data.frame(col = c("a", "b", "c", "d", "e"))
test$col <- factor(test$col)

test$col2 <- ifelse(test$col %in% c("a","b","c"), "x", "z")

R相关问答推荐

从API中抓取R数据SON

基于现有类创建类的打印方法(即,打印tibles更长时间)

如何对数据集进行逆向工程?

找出疾病消失的受试者

隐藏e_mark_line的工具提示

使用strsplit()将向量操作为数据框

如何在Chart_Series()中更改轴值的 colored颜色 ?

在ggplot2中更改小提琴情节的顺序

R中的时间序列(Ts)函数计数不正确

以更少间隔的较小表中的聚合离散频率表

在不丢失空值的情况下取消列出嵌套列表

如何在ggplot2中绘制具有特定 colored颜色 的连续色轮

根据另一列中的值和条件查找新列的值

调换行/列并将第一行(原始数据帧的第一列)提升为标题的Tidyr类似功能?

按列中显示的配对组估算NA值

将列表中的字符串粘贴到R中for循环内的dplyr筛选器中

随机 Select 的非NA列的行均数

如何更改包中函数中的参数?

对一个数据帧中另一个数据帧中的值进行计数

使用nls()函数的非线性模型的半正态图