r - 为什么这个 for 循环不能正确填充新的数据框?
问题描述
我正在尝试创建一个新的数据框,该数据框根据调查答案计算分数。我似乎无法正确填充分数数据框。
我尝试在 for 循环中使用一系列 if else 语句。
df <- rbind(c("Y", "no", "Often"), c("N", "yes", "always"), c("Y", "yes",
"never"))
score <- as.data.frame(matrix(0, nrow = 3, ncol = 3))
t <- 1
for (t in nrow(df)) {
if (df[t,1] == "Y") {
score[t,1] <- 2
} else if (df[t,2] == "yes") {
score[t,2] <- 2
} else if (df[t,3] == "always") {
score[t,3] <- 2
} else if (df[t,3] == "often") {
score[t,3] <- 1
}
next
}
我正在寻找输出为:2、0、1、0、2、2、2、2、0
我得到:0、0、0、0、0、0、2、0、0
解决方案
因为在进入循环之前t
被分配了等于 , 的单个值。nrow(df)
这是您的重新工作(也更正了一个错字):
df <- rbind(c("Y", "no", "Often"),
c("N", "yes", "always"),
c("Y", "yes", "never"))
score <- as.data.frame(matrix(0, nrow = 3, ncol = 3))
for (t in 1:nrow(df)) {
if (df[t,1] == "Y") {
score[t,1] <- 2
}
if (df[t,2] == "yes") {
score[t,2] <- 2
}
if (df[t,3] == "always") {
score[t,3] <- 2
}
if (df[t,3] == "Often") {
score[t,3] <- 1
}
}
score
V1 V2 V3
1 2 0 1
2 0 2 2
3 2 2 0
推荐阅读
- javascript - 如何在 http 请求中使用存储数据?
- c# - MySQLX.GetSession 异常::'预期的消息 id:2。收到的消息 id:10'
- python-3.x - 网络刮刀在美丽的汤中不起作用
- java - 如何从片段中调用一个类
- python - 如何使用 __pycache__ 文件夹运行 Python 项目?
- java - Java 8 使用流重写复杂的 for 循环
- javascript - 如何使用单个函数在画布上绘制多个图像?
- c++ - GLib-GObject-CRITICAL ...断言“夸克> 0”失败
- python - 使用 set() 或 {} 创建集合的区别
- android-studio - Android Studio - Flutter Plugin - 通过重构将方法移动到另一个文件