R 仅当满足其他列中的条件时才替换字符串

R 仅当满足其他列中的条件时才替换字符串,r,replace,conditional-statements,gsub,R,Replace,Conditional Statements,Gsub,我有一个数据框 test<-data.frame(A=c("aa","be","cg","dh"),B=c("i","i","i","i")) A B 1 aa i 2 be i 3 cg i 4 dh i 我试过了 test[(grep("e", test$A)),] <- as.data.frame(lapply(test, gsub, pattern= "i", replacement="yes", test$B)) test[(grep(“e

我有一个数据框

test<-data.frame(A=c("aa","be","cg","dh"),B=c("i","i","i","i"))

   A   B
1 aa  i
2 be  i
3 cg  i
4 dh  i
我试过了

test[(grep("e", test$A)),] <- as.data.frame(lapply(test, gsub, pattern=      "i", replacement="yes", test$B))

test[(grep(“e”,test$A)),]有很多方法可以做到这一点。在data.table中执行此操作的巧妙方法:

test<-data.frame(A=c("aa","be","cg","dh"),B=c("i","i","i","i"))
library(data.table)
test = as.data.table(test)
test[grepl("e",A),B := "yes"]

test有很多方法可以做到这一点。在data.table中执行此操作的巧妙方法:

test<-data.frame(A=c("aa","be","cg","dh"),B=c("i","i","i","i"))
library(data.table)
test = as.data.table(test)
test[grepl("e",A),B := "yes"]

test首先,确保字符串是字符串而不是因子:

test<-data.frame(A=c("aa","be","cg","dh"),B=c("i","i","i","i"),
    stringsAsFactors=F)
更好的方法是从
data.frame
切换到
data.table
,然后就是这样:

test[grepl("e", A), B := gsub("i", "yes", B)];
注意:这假设您希望将B中的“i”替换为“是”,“ii”替换为“是”,“iai”替换为“是”,等等。。。如果您只想在A有“e”时将B的值设置为“是”,则:

test[grepl("e", A), B := "yes"];
test[B=="i" & grepl("e", A), B := "yes"];
或者,当B为“i”且A有一个“e”时,如果您想将B的值设置为“是”,则:

test[grepl("e", A), B := "yes"];
test[B=="i" & grepl("e", A), B := "yes"];

首先,确保字符串是字符串而不是因子:

test<-data.frame(A=c("aa","be","cg","dh"),B=c("i","i","i","i"),
    stringsAsFactors=F)
更好的方法是从
data.frame
切换到
data.table
,然后就是这样:

test[grepl("e", A), B := gsub("i", "yes", B)];
注意:这假设您希望将B中的“i”替换为“是”,“ii”替换为“是”,“iai”替换为“是”,等等。。。如果您只想在A有“e”时将B的值设置为“是”,则:

test[grepl("e", A), B := "yes"];
test[B=="i" & grepl("e", A), B := "yes"];
或者,当B为“i”且A有一个“e”时,如果您想将B的值设置为“是”,则:

test[grepl("e", A), B := "yes"];
test[B=="i" & grepl("e", A), B := "yes"];

ifelse
功能在这里很方便:

test$B <- ifelse(grepl("e", test$A), gsub("i", "yes", test$B), test$B)

test$B在这里,
ifelse
函数非常有用:

test$B <- ifelse(grepl("e", test$A), gsub("i", "yes", test$B), test$B)

test$B您尝试的内容不可读。请提供一个更容易使用的代码。这是非常基本的子集和赋值。阅读
帮助(“[”)
。解决方案比您拥有的要简单得多。例如,右侧可以替换为“是”。您尝试的内容无法阅读。请提供更易于使用的代码。这是非常基本的子集和赋值。阅读
帮助(“[”)
。解决方案比您现有的要简单得多。例如,右侧可以替换为“是”。仅供参考,data.table还提供了
A%like%“e”
而不是
grepl
。仅供参考,data.table还提供了
A%like%“e”
而不是
grepl