R 如果向量y的对应值不是“否”,我想用“是”替换向量x中的每个值
在R中使用此代码:R 如果向量y的对应值不是“否”,我想用“是”替换向量x中的每个值,r,R,在R中使用此代码: x <- c("No", "Yes", "No") y <- c("Yes", "No", "No") df <- data.frame(x, y) my.yes <- function(x,y) { for (i in length(x)){ x[i] <<- ifelse(x[i]=="No&quo
x <- c("No", "Yes", "No")
y <- c("Yes", "No", "No")
df <- data.frame(x, y)
my.yes <- function(x,y) {
for (i in length(x)){
x[i] <<- ifelse(x[i]=="No" && y[i]!="No", "Yes", "No")
}
}
my.yes(df$x, df$y)
我希望df中的x是这样的:是的,是的,不是
提前谢谢 我们可以使用pmax
在OP的函数中,我们可以更改&&to&并在ifelse被矢量化时删除循环
with(df, ifelse(x == 'Yes'| y == "Yes", 'Yes', 'No'))
#[1] "Yes" "Yes" "No"
它可以被包装成一个函数
my.yes <- function(dat) {
with(dat, ifelse(x == 'Yes'| y == "Yes", 'Yes', 'No'))
}
my.yes(df)
我们可以使用pmax
在OP的函数中,我们可以更改&&to&并在ifelse被矢量化时删除循环
with(df, ifelse(x == 'Yes'| y == "Yes", 'Yes', 'No'))
#[1] "Yes" "Yes" "No"
它可以被包装成一个函数
my.yes <- function(dat) {
with(dat, ifelse(x == 'Yes'| y == "Yes", 'Yes', 'No'))
}
my.yes(df)
这是另一个选项,根据条件从返回值向量cNo中提取
rui <- function(df){
c("No", "Yes")[with(df, x == "Yes" | y == "Yes") + 1]
}
rui(df)
#[1] "Yes" "Yes" "No"
一个基准测试显示,这一个是三个中最快的,另外两个是最快的
这是另一个选项,根据条件从返回值向量cNo中提取
rui <- function(df){
c("No", "Yes")[with(df, x == "Yes" | y == "Yes") + 1]
}
rui(df)
#[1] "Yes" "Yes" "No"
一个基准测试显示,这一个是三个中最快的,另外两个是最快的
另一种bae解决方案:
deni = function(df){
df$x[df$y != "No"] <- "Yes"
return(df$x)
}
另一种bae解决方案:
deni = function(df){
df$x[df$y != "No"] <- "Yes"
return(df$x)
}
如果x和y都是是,那么预期输出是什么?如果两者都是是,那么将其保留为是如果x和y都是是,那么预期输出是什么?如果两者都是是,那么将其保留为是您编写的函数本质上是替换x,y!=不,是+1我不知道替换,谢谢!更具可读性实际上您编写的函数本质上是replacex,y!=不,是+1我不知道替换,谢谢!更容易阅读