Какой объект R может содержать переменные, чтобы я мог перебирать объект? - PullRequest
0 голосов
/ 23 ноября 2018

Это кажется простым, но я вращаю свои колеса.

У меня есть 80 символьных переменных.Я хочу 1) просмотреть уникальные значения в каждой переменной, 2) просмотреть количество уникальных значений и 3) преобразовать некоторые или все переменные в факторы.

Я могу сделать это одно за другим, явно назвав столбцы:

df$var1 # "val2" "val2" "val1" "val2" ... 
unique(df$var1) # "val1" "val2" "val3" 
length(unique(df$var1)) # 3 
df$var1 = as.factor(df$var1)

... хотя это приводит к ошибке:

levels(df@var1)
# Error in levels(df@var1) : 
# trying to get slot "var1" from an object (class "tbl_df") 
# that is not an S4 object 

Но когдаЯ создаю список символьных переменных и пробую то же самое, что и выше, это не работает.

# create list of char vars
char_vars_names <- names(df[, sapply(df, class) == 'character'])
char_vars_names
#[1] "var1" "var2" "var3" ...

df$char_vars_names[1]  # NULL
# Warning message: Unknown or uninitialised column: 'char_vars_names'.

unique(df$char_vars_names[1])  # NULL
length(unique(df$char_vars_names[1]))  # 0

Как только я получу вышеуказанную работу, я полагаю, что могу перебрать список с помощью цикла for:

for (i in range(length(char_vars_names))) {
    # code

}

Что это за объект char_vars_names или где-то еще в моем коде, что делает это неработоспособным?

В случае, если это полезно, вот мой импорт и прием данных док вышеуказанному коду:

library(car) 
library(lattice)
library(tidyverse)
library(ISLR)
library(Lahman) 
library(mdsr)

file = "file.csv"
df <- read_csv(
    file=file,
    col_names = TRUE,  
    skip = 3,
    na = c("", "NA"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...