Python的loc功能在R中的等效实现?如何为R data.frame指定行赋值
R DataFrame按行名赋值异常的原因及解决方法
问题原因
R的[行,列]索引默认优先按位置下标解析数值型输入,你传入的2050是数值类型,R会判定你要访问第2050行,而你当前的df只有4行,因此会自动填充2046行空值行补到第2050行,就出现了新增大量行的问题。
解决方法
- 方法1:将行名转为字符型匹配(最简单)
把数值型的行名转成字符串,R就会按行名匹配而非位置索引:
dfplot["2050", "Column1"] <- 33
- 方法2:用which匹配行名位置
如果要保留数值型匹配逻辑,可以先找到对应行名的下标位置再赋值:
target_row <- which(rownames(dfplot) == 2050) dfplot[target_row, "Column1"] <- 33
- 方法3:tidyverse风格写法(适合后续做数据可视化、分析的场景)
把行名转为普通列后用条件赋值,逻辑更清晰不易出错:
library(dplyr) dfplot <- dfplot %>% mutate(year = as.numeric(rownames(.))) %>% mutate(Column1 = ifelse(year == 2050, 33, Column1))
内容的提问来源于stack exchange,提问作者AV1234
相关产品推荐
相关产品推荐

