如何在R语言中仅对非空DataFrame单元格应用指定公式
解决方案
你可以在lapply的匿名函数里加入条件判断,只对非空字符串的单元格添加前缀,空单元格保持原样。以下是两种可行的实现方式:
方法1:使用ifelse进行条件判断
直接在遍历列的函数里,通过ifelse区分空与非空单元格:
d <- c("a","b","c","") c <- c("f","","g","h") e <- data.frame(d,c) # 修改后的代码 e[] <- lapply(e, function(x) ifelse(x != "", paste("xx", x, sep="_"), x))
这段代码会遍历DataFrame的每一列,对每个元素检查:如果不是空字符串,就拼接xx_前缀;如果是空字符串,就保留原内容。
方法2:使用replace函数替换目标元素
通过replace函数定位非空单元格,只替换这些位置的内容:
e[] <- lapply(e, function(x) replace(x, x != "", paste("xx", x[x != ""], sep="_")))
这个方法先筛选出非空的元素进行前缀拼接,再替换回原列的对应位置,空单元格不受影响。
验证结果
处理后的e会变成:
d c 1 xx_a xx_f 2 xx_b 3 xx_c xx_g 4 xx_h
完全符合仅给非空单元格添加前缀的需求,且不管DataFrame有多少列,lapply都会自动遍历处理每一列。
内容的提问来源于stack exchange,提问作者user1845518
相关产品推荐
相关产品推荐

