r - 如何在 R 中使用 for 循环处理数据帧?
问题描述
### Part1 --------------------------------------------------------------
data5 <- data.frame(late_AMD_1st=c(1, NA, 3, 4), RVO_1st=c(5, 6, NA, 8))
# late_AMD_1st RVO_1st
# 1 1 5
# 2 NA 6
# 3 3 NA
# 4 4 8
data5 <- subset(data5, !(is.na(data5$late_AMD_1st)))
data5 <- subset(data5, !(is.na(data5$RVO_1st)))
# data5
# late_AMD_1st RVO_1st
# 1 1 5
# 4 4 8
### Part2 --------------------------------------------------------------
data5 <- data.frame(late_AMD_1st=c(1, NA, 3, 4), RVO_1st=c(5, 6, NA, 8))
col_name <- c("late_AMD_1st", "RVO_1st")
for (i in col_name){
data5 <- subset(data5, !(is.na(data5$i)))
}
# data5
# [1] late_AMD_1st RVO_1st
# <0 行> (または長さ 0 の row.names)
我想做与 Part2 中的 Part1 相同的事情。但不知何故,我在第 2 部分中得到了不同的 data.frame。使用 for 循环我错了吗?
解决方案
如果你真的想使用循环
data5 <- data.frame(late_AMD_1st=c(1, NA, 3, 4), RVO_1st=c(5, 6, NA, 8))
col_name <- c("late_AMD_1st", "RVO_1st")
for (i in col_name){
data5 <- subset(data5, !(is.na(data5[, i])))
}
data5
#late_AMD_1st RVO_1st
#1 1 5
#4 4 8
这里,是 中的data5[, i]
列名。i
data5
如果您的目标是删除所有NA
带有s的行,您可以很容易地做到这一点而无需循环。
na.omit(data5)
推荐阅读
- php - Laravel:自定义登录重定向到 /home 而不是 /welcome 页面
- css - CSS:如何正确使用 display=flex?
- bash - 计算 Bash Shell 中每列的行数
- vb.net - 使用 sqlconnection 连接到服务器不起作用
- angular - 遍历从 API(Typescript)返回的 JSON“字典”
- android - 我需要使用android中的线程每秒增加一个数字
- azure-cosmosdb - Azure Cosmos db 性能问题以及如何改进
- sonarqube - 如何为 sonarqube 设置基本 url?
- php - 如何删除 ini_set() 一个会话在 PHP 7.3.9 中处于活动状态?
- sql-server - 使用带有 LIKE 的通配符从 SQL Server 检索数据