【发布时间】:2015-07-22 08:56:32
【问题描述】:
在清理数据框时,我发现对子集的分配是按列而不是按行进行的,但在进行数据集清理时会出现不幸的结果,因为您通常会搜索问题案例,然后在多行中应用您的更正。
# example table
releves <- structure(list(cult2015 = c("bp", "bp"), prec2015 = c("?", "?"
)), .Names = c("cult2015", "prec2015"), row.names = c(478L, 492L
), class = "data.frame")
# assignement to a subset
iBad2 <- which(releves$cult2015 == "bp" & releves$prec2015 == "?")
releves[iBad2,c("cult2015","prec2015")] <- c("b","p")
我知道矩阵的“填充”是按列完成的,因此,提供的向量的重复是在每一列上完成的,但是是否有任何选项可以获得:每行上的“b”、“p”和不是:
> releves
cult2015 prec2015
478 b b
492 p p
【问题讨论】:
-
也许您可以
rep(c("b","p"), each = length(iBad2))但这可能需要更多思考才能扩展到一般情况以防万一。