R语言如何按行优先批量替换dataframe中指定的多行内容
R 对 data.frame 子集赋值默认按列循环填充,直接传入长度为 2 的向量 c(1,2) 会先填充第一列的两行,再填充第二列的两行,因此会得到你示例中的错误结果。
可行解决方案
方案1:构造维度匹配的按行填充矩阵
构造和待替换子集维度完全一致的矩阵,开启按行填充模式即可实现按行赋值:
df[1:2, ] <- matrix(c(1,2), nrow = 2, ncol = ncol(df), byrow = TRUE)
方案2:列表赋值(更简洁)
data.frame 本质是按列存储的列表结构,传入长度和列数相等的列表,R 会自动将每个列表元素填充到对应列的所有选中行:
df[1:2, ] <- list(1, 2)
两种方法执行后,都可以得到你期望的输出:
n m 1 1 2 2 1 2 3 3 6
内容的提问来源于stack exchange,提问作者Dagman
相关产品推荐
相关产品推荐

