r - 用相同类型的NA填充列的函数
问题描述
我有一个包含许多不同类型列的数据框。我想用相应类的 NA 替换每一列。
例如:
df = data_frame(x = c(1,2,3), y = c("a", "b", "c"))
df[, 1:2] <- NA
生成具有两个逻辑列的数据框,而不是数字和字符。我知道我可以告诉 R:
df[,1] = as.numeric(NA)
df[,2] = as.character(NA)
但是,对于所有可能类型为 NA 的所有列,我如何在一个循环中集体执行此操作?
解决方案
你可以使用这个“技巧”:
df[1:nrow(df),1] <- NA
df[1:nrow(df),2] <- NA
[1:nrow(df),]
基本上告诉R用这种方式替换列中的所有值,NA
并且在替换其他值之前将逻辑NA
强制转换为列的原始类型。
此外,如果您有很多列要替换并且 data_frame 有很多行,我建议存储行索引并重用它们:
rowIdxs <- 1:nrow(df)
df[rowIdxs ,1] <- NA
df[rowIdxs ,2] <- NA
df[rowIdxs ,3] <- NA
...
正如@RonakShah巧妙地建议的那样,您还可以使用:
df[TRUE, 1] <- NA
df[TRUE, 2] <- NA
...
正如@Cath所指出的,当您选择多个列时,这两种方法仍然有效,例如:
df[TRUE, 1:3] <- NA
# or
df[1:nrow(df), 1:3] <- NA
推荐阅读
- ip - 准确检测用户IP地址的问题
- r - ggplot2:如何动态包装/调整大小/重新缩放 x 轴标签,使它们不会重叠
- datastage - 将字符串格式与月份转换为数据阶段中的时间戳
- gluon-mobile - 显示特殊字符
- javascript - 如何在 express 中使用调试器进行异步函数?
- rust - 在 RUST 中让哈希器处于脏状态意味着什么
- python - 在系统中找不到文件
- reactjs - react-dates onDatesChange startDate 和 endDate 为空,DayPickerRangeController
- javascript - 如何在我的脚本之前弹出警报
- swift - Swift Combine PassThroughSubject 不会在 XCTestCase 中触发接收器关闭