数据未正确存储在data.frame中

时间:2015-06-30 16:35:42

标签: r

我正在编写一个应该扫描文件的简单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))

关于我在这里做错什么的任何想法?

1 个答案:

答案 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)时,你可能正在做一些不必要的强制。