2014-11-16 3 views
0

Я написал функцию, которая должна возвращать dataframe. Хотя выход в порядке, заголовки вывода неверны. Когда я инициализировал dataframe (вывод), я четко обозначил два столбца: «id» и «nobs». Однако на выходе столбцы обозначаются как X30 и X932 соответственно. Может кто-нибудь помочь?Заголовки Dataframe ошибочны в R

Вот мой код

complete <- function(directory, id) { 
    output <- data.frame(id=character(), 
        nobs=character(), 
        stringsAsFactors=FALSE) 
    files <- list.files() 
    for (i in id){ 
    mydata <- read.csv(files[i]) 
    nobs <- nrow(na.omit(mydata)) 
    tempVector <- c(i, nobs) 
    output <- rbind(output, tempVector) 
} 

print(output) 

} 
+1

по умолчанию для 'read.csv' должен иметь первую строку в качестве строк заголовка. Эти имена столбцов выглядят как данные некорректно интерпретируются как заголовки. Вам нужно более внимательно прочитать страницу '? Read.table' и, возможно, придумать лучшую стратегию. –

ответ

1

я не могу проверить, не воспроизводимый пример, но если вы tempVector <- data.frame(id=i, nobs=nobs), я думаю, что он будет работать так, как вы хотите.

Или, вы можете сэкономить несколько строк кода и сделать:

mydata <- read.csv(files[i]) 
    output <- rbind(output, data.frame(id=i, nobs=nrow(na.omit(mydata)))) 
1

Если я правильно вы просто хотите знать идентификатор и количество наблюдений в пределах этого идентификатора.
Попробуйте readLines вместо.

id <- 1:3 
files <- list.files() 
files_nrow <- function(id){ 
    c(id=id, nobs= length(readLines(files[id]))) 
} 

data.frame(t(sapply(id,files_nrow))) 

Результат:

id nobs 
1 1 12 
2 2 8 
3 3 13