【发布时间】:2021-10-07 02:03:35
【问题描述】:
我希望没有人会(太)厌倦我。我在下面给出了一个完全虚构的问题示例。仅在数据框中包含数字和字符串列的混合后才会给出错误,即使从函数中排除了数字列(下面未显示)。该函数使用 grepl 在 c 列中查找 d 的内容,反之亦然,然后应该从 ifelse 中创建一个包含“yes”和“no”语句的新列。我需要在测试后返回“是”和“否”,但这是给出错误的部分。
a <- c(5:10)
b <- c(105:110)
c <- c("a","b","c","d","e","f")
d <- c("aa","bc","cd","ff","ee", "gf")
df <- data.frame(a,b,c,d)
newfunction <- function(x, col1, col2, col3, col4){ifelse(((sapply(lapply(x[[col4]], grepl,
x[[col3]]),any)) | (sapply(lapply(x[[col3]], grepl, x[[col4]]),any))), (11 - x[[col1]]), (1 -
x[[col2]]))}
df$new <- apply(df, 1, newfunction, "a", "b", "c", "d")
Error in 11 - x[[col1]] : non-numeric argument to binary operator
【问题讨论】:
标签: r if-statement apply