如果(没有其他)-R 中带有子字符串的句子
If (no else)-sentences with substring in R
我有一个 df,我想对 screen_name 列中所有列的第一个字母进行子字符串化,名称为 'frank' 的单元格除外。 R 忽略了我所有的尝试(子字符串在所有单元格上执行)。为什么?
df <- data.frame("screen_name" = c("august", "berit", "christopher", "david", "erica", "frank"), "rt_name" = c("berit", "august", "david", "erica", "frank", "christopher"))
#IF-sentence with '%!like%'
'%!like%' <- function(x,y)!('%like%'(x,y))
df$screen_name<- if(df$screen_name %!like% ('frank')) {substr(df$screen_name, 1, 2)}
#IF-sentence with !=
df$screen_name<- if(df$screen_name != 'frank') {substr(df$screen_name, 1, 2)}
我正在寻找包含 %!like% 或类似内容的解决方案,因为 df 中的名称可能会有所不同,而且我并不总是完全匹配。
我的预期输出是
df_exp <- data.frame("screen_name" = c("au", "be", "ch", "da", "er", "frank"), "rt_name" = c("berit", "august", "david", "erica", "frank", "christopher"))
提前致谢!
您可以尝试使用 ifelse
结合 grepl
来检查输入的屏幕名称是否恰好是 frank
:
df$screen_name <- ifelse(!grepl("^frank$", df$screen_name),
substr(df$screen_name, 1, 2), df$screen_name)
df
screen_name rt_name
1 au berit
2 be august
3 ch david
4 da erica
5 er frank
6 frank christopher
数据:
df <- data.frame(screen_name = c("august", "berit", "christopher", "david",
"erica", "frank"),
rt_name = c("berit", "august", "david", "erica", "frank",
"christopher"), stringsAsFactors=FALSE)
我有一个 df,我想对 screen_name 列中所有列的第一个字母进行子字符串化,名称为 'frank' 的单元格除外。 R 忽略了我所有的尝试(子字符串在所有单元格上执行)。为什么?
df <- data.frame("screen_name" = c("august", "berit", "christopher", "david", "erica", "frank"), "rt_name" = c("berit", "august", "david", "erica", "frank", "christopher"))
#IF-sentence with '%!like%'
'%!like%' <- function(x,y)!('%like%'(x,y))
df$screen_name<- if(df$screen_name %!like% ('frank')) {substr(df$screen_name, 1, 2)}
#IF-sentence with !=
df$screen_name<- if(df$screen_name != 'frank') {substr(df$screen_name, 1, 2)}
我正在寻找包含 %!like% 或类似内容的解决方案,因为 df 中的名称可能会有所不同,而且我并不总是完全匹配。
我的预期输出是
df_exp <- data.frame("screen_name" = c("au", "be", "ch", "da", "er", "frank"), "rt_name" = c("berit", "august", "david", "erica", "frank", "christopher"))
提前致谢!
您可以尝试使用 ifelse
结合 grepl
来检查输入的屏幕名称是否恰好是 frank
:
df$screen_name <- ifelse(!grepl("^frank$", df$screen_name),
substr(df$screen_name, 1, 2), df$screen_name)
df
screen_name rt_name
1 au berit
2 be august
3 ch david
4 da erica
5 er frank
6 frank christopher
数据:
df <- data.frame(screen_name = c("august", "berit", "christopher", "david",
"erica", "frank"),
rt_name = c("berit", "august", "david", "erica", "frank",
"christopher"), stringsAsFactors=FALSE)