【发布时间】:2021-06-08 22:30:05
【问题描述】:
我目前正在尝试编写一个函数,用于评估字符变量在字符内是否有“F”或“M”,并且该字符也有多个数字(即 3849F 是 ID 3849,女性)。我已经整理出一个函数来给我一个布尔输出,它给出 TRUE is F is present and FALSE is M is present。
我现在如何使用此布尔输出将这些替换为所需的“F”和“M”字符值?
到目前为止我的代码如下:
sex = list()
for (i in 1:length(dataset)){
fsex = grepl("F", dataset, fixed = T)
if (fsex == T) sex = c(sex, "F")
else if (fsex == F) sex = c(sex, "M")
}
【问题讨论】:
-
首先,
grepl是矢量化的,因此不需要循环。grepl的结果是一个逻辑向量。这可能被强制转换为数字索引,可用于索引“F”和“M”的向量:x = c("12F", "23M", "34F", "45M");c("M", "F")[grepl("F", x) + 1]。请确保发布一个 minimal 示例(易于复制粘贴,即 不是 图像;),潜在的帮助者可以在上面试用他们的代码。干杯 -
@Henrik 谢谢!这有帮助,我能够让它发挥作用。还要感谢您对代码示例的建议——我也会确保做一个粘贴的版本。
标签: r function if-statement boolean character