我对R很陌生,遇到了一个我似乎无法自行解决的问题。您应该很容易。
我打算写一个通用函数来操纵数据帧df中的列n。我希望它执行一个简单的任务,对于每一行,当n <5时,应使用1到4之间的随机数替换该值。df <- data.frame(n= 1:10, y = letters[1:10],
stringsAsFactors = FALSE)
最优雅的解决方案是什么?
答案 0 :(得分:3)
一种方法是基于列创建逻辑索引,基于索引对列进行子集并分配sample
d值
f1 <- function(dat, col) {
i1 <- dat[[col]] < 5
dat[[col]][i1] <- sample(1:4, sum(i1), replace = TRUE)
dat
}
f1(df, "n")