2015-11-19 3 views
0

Я прочитал два CSV-файла и сделал некоторые изменения.Функция Sapply в R

a1<-read.csv("2013.csv",header=T, na.strings = c("NULL","PrivacySuppressed")) 

a2<-a1[,441,drop=F] 

a3<-a1[,-441,drop=F] 

a4<-cbind(a1,a2) 

a4<-a4[, colSums(is.na(a4)) != nrow(a4)] 

mode(a4) 

[1] "list" 

мне нужно a4 быть целым числом, поэтому я использовал sapply

s<-sapply(a4, as.numeric) 
mode(s) 
[1] "numeric" 

Однако, проблема в том, что имена столбцов исчезли.

names(s) 

NULL 

Все предыдущие данные имели имена столбцов. Извините, здесь невозможно ввести, так как существует 600 переменных (600 разных имен столбцов). У меня были имена для моей колонки до a4. После применения «sapply», имена говорят «NULL». Когда я просто вводю s, я вижу имена столбцов, но не обнаруживает их как имена столбцов. Пожалуйста помоги.

спасибо.

+0

Я думаю, что это вопрос лучше всего подходит для StackOverflow. –

+2

Попробуйте 'colnames (s)', так как 'sapply()' возвращает матрицу. И 'as.integer()', если вам нужны целые числа. 'as.numeric()' не будет принуждать к целому числу. Но, вероятно, что вы действительно хотите, это 'a4 [] <- lapply (a4, as.integer)'. Это сохранит класс фрейма данных, позволяя использовать 'names (a4)' –

+0

Я попробовал функцию lapply. ы <-lapply (а4, as.integer). Он возвратил имена столбцов, но потерял его тусклый (-ы) -> NULL. – user3350759

ответ

-2

Я думаю, что правая команда:

a4 <- as.numeric(a4) 
Смежные вопросы