使用R的ifelse语句中未使用的参数错误
unused argument error in ifelse statement using R
我正在尝试根据 ifelse 语句创建一个新的数据框。我正在检查 1 个数据框以查看字段是否包含字符串。如果是这样,那么我想使用过滤器、子集和 rbind 方法将该数据帧中的行添加到另一个数据帧:
这个有效:
#Check to see if field contains string.
timeline.data.2 <-ifelse(grepl(1043-1, prescription.data$case_id),
timeline.data <- timeline.data %>%
filter(case_id==1043-1),
"do nothing")
这不是:
#Check to see if field contains string.
timeline.data.2 <-ifelse(grepl(1043-1, prescription.data$case_id),
timeline.data <- timeline.data %>%
filter(case_id==1043-1),
timeline.data <-subset(timeline.data, select = c(event,group,start,end,color,tooltip)),
timeline.data <- subset(prescription.data, select = c(event,group,start,end,color,tooltip)),
timeline.data <- rbind(timeline.data, prescription.data),
"do nothing")
我遇到错误:
Error in ifelse(grepl(1043 - 1, prescription.data$case_id), timeline.data <- timeline.data %>% :
unused argument ("do nothing")
谁能告诉我我做错了什么?非常感谢。
使用if/else
可能会更好
library(dplyr)
if(any(grepl("1043-1", prescription.data$case_id))) {
timeline.data <- timeline.data %>%
filter(grepl("1043-1", case_id))
} else "do nothing"
ifelse
恰好接受三个参数。你似乎提供... 6?我认为?这就是“未使用的参数”的意思:你给了它太多的参数。这就是为什么您的 first 示例有效,只有三个参数。
您使用 ifelse
在值之间进行选择,同时 运行 向下一个向量。它适用于简单的工作,例如替换 NA:ifelse(is.na(my_data), 'bad value', my_data)
.
在您弄清楚您使用 ifelse
的目的后,indent and line-break your code properly。然后您将能够解释什么是参数,什么不是,这样的错误消息将更有意义。
如果我 运行 你的代码通过 styler
它打印如下:
# Check to see if field contains string.
timeline.data.2 <- ifelse(grepl(1043 - 1, prescription.data$case_id),
timeline.data <- timeline.data %>%
filter(case_id == 1043 - 1),
timeline.data <- subset(timeline.data, select = c(event, group, start, end, color, tooltip)),
timeline.data <- subset(prescription.data, select = c(event, group, start, end, color, tooltip)),
timeline.data <- rbind(timeline.data, prescription.data),
"do nothing"
)
现在可以更容易地看到所有这些以逗号结尾的行,进入 ifelse
。
我正在尝试根据 ifelse 语句创建一个新的数据框。我正在检查 1 个数据框以查看字段是否包含字符串。如果是这样,那么我想使用过滤器、子集和 rbind 方法将该数据帧中的行添加到另一个数据帧:
这个有效:
#Check to see if field contains string.
timeline.data.2 <-ifelse(grepl(1043-1, prescription.data$case_id),
timeline.data <- timeline.data %>%
filter(case_id==1043-1),
"do nothing")
这不是:
#Check to see if field contains string.
timeline.data.2 <-ifelse(grepl(1043-1, prescription.data$case_id),
timeline.data <- timeline.data %>%
filter(case_id==1043-1),
timeline.data <-subset(timeline.data, select = c(event,group,start,end,color,tooltip)),
timeline.data <- subset(prescription.data, select = c(event,group,start,end,color,tooltip)),
timeline.data <- rbind(timeline.data, prescription.data),
"do nothing")
我遇到错误:
Error in ifelse(grepl(1043 - 1, prescription.data$case_id), timeline.data <- timeline.data %>% :
unused argument ("do nothing")
谁能告诉我我做错了什么?非常感谢。
使用if/else
library(dplyr)
if(any(grepl("1043-1", prescription.data$case_id))) {
timeline.data <- timeline.data %>%
filter(grepl("1043-1", case_id))
} else "do nothing"
ifelse
恰好接受三个参数。你似乎提供... 6?我认为?这就是“未使用的参数”的意思:你给了它太多的参数。这就是为什么您的 first 示例有效,只有三个参数。
您使用 ifelse
在值之间进行选择,同时 运行 向下一个向量。它适用于简单的工作,例如替换 NA:ifelse(is.na(my_data), 'bad value', my_data)
.
在您弄清楚您使用 ifelse
的目的后,indent and line-break your code properly。然后您将能够解释什么是参数,什么不是,这样的错误消息将更有意义。
如果我 运行 你的代码通过 styler
它打印如下:
# Check to see if field contains string.
timeline.data.2 <- ifelse(grepl(1043 - 1, prescription.data$case_id),
timeline.data <- timeline.data %>%
filter(case_id == 1043 - 1),
timeline.data <- subset(timeline.data, select = c(event, group, start, end, color, tooltip)),
timeline.data <- subset(prescription.data, select = c(event, group, start, end, color, tooltip)),
timeline.data <- rbind(timeline.data, prescription.data),
"do nothing"
)
现在可以更容易地看到所有这些以逗号结尾的行,进入 ifelse
。