我对 R 有一个问题,这让我发疯....
我根据报告的数据(清理和验证)设置了很多条件变量,并且一直遇到这个问题。它与替换向量的长度和条件语句有关(请原谅我的解释不佳......)。
让我举一个你的例子:
根据报告的数据,我创建了一个“合成”字符变量batch_id
,如下所示paste(var1, var2, sep="")
。但是,仅当var2
6 个字符长且以“B”结尾时。
如果 var2 更短(通常是这样)或不以“B”结尾,我想要batch_id <- NA
(缺失)
我尝试了以下方法:
data <- within(data, batch_id[nchar(data$var2) <6] <- NA)
data <- within(data, batch_id[nchar(data$var2) == 6 &
!substr(data$var2, 6, 6) == "B"] <- NA)
data <- within(
data, batch_id[nchar(data$var2) == 6 &
substr(data$var2, 6, 6) == "B"] <- paste(data$var1, data$var2, sep=""))
但是,在最后一行代码中,我收到错误消息:
number of items to replace is not a multiple of replacement length
哦,我多么喜欢这个错误信息!:)
我知道,通过[...]
在右侧为两者 var1
设置相同的条件,var2
它确实有效,但必须有更好的(稍后更优雅、更易读)的方式来做到这一点?