我正在编写一个应该扫描文件的简单if语句,检查行的第一个值是否以9开头,然后将该行放在数据框中
turn_time <- function() {
ikr <- read.csv2("IKR_Dataset_2009-2015_test.csv", header = T)
data_frame <- data.frame(integer(0), character(0))
for (i in 1:nrow(ikr)) {
temp <- substr(ikr$TYD_RESULT_KEUR[i], 1, 1)
vin <- ikr$EEG_VRTG_CAT_V[i]
if (temp == 9) {
add <- c(9, vin)
data_frame <- rbind(data_frame, add)
}
}
data_frame
}
我现在得到以下输出:
然而,这与我得到的结果不符:
ikr$VRTG_ID_NR
这给了我:
[1] VF1JA04N522215749 VF7Y4WH0000WH4798 JMZGY193241146337
Levels: JMZGY193241146337 VF1JA04N522215749 VF7Y4WH0000WH4798
所以它没有在我的data.frame中正确存储ikr $ VRTG_ID_NR。所以我认为这与定义我的data.frame:
有关 data_frame <- data.frame(integer(0), character(0))
关于我在这里做错什么的任何想法?
答案 0 :(得分:0)
尝试运行:
ikr <- read.csv2("IKR_Dataset_2009-2015_test.csv", header = T)
result <- ikr[substr(ikr$TYD_RESULT_KEUR,1,1) == '9',c("TYD_RESULT_KEUR","EEG_VRTG_CAT_V")]
result$TYD_RESULT_KEUR <- "9" #or maybe just 9, if you want it to be numeric
创建一个空数据框,然后使用rbind
添加到它基本上总是一个坏主意。此外,c()
创建一个向量,它只能容纳一种类型的数据。当你做c(9, vin)
时,你可能正在做一些不必要的强制。