Unlist датафрейм дает неожиданный результат - PullRequest
0 голосов
/ 21 марта 2019

Пожалуйста, помогите с вопросом, почему код ниже производит вектор ("1", "1") вместо ожидаемого ("1", "строка") и как это исправить.Спасибо.

data<-c("string")

data<-data.frame(lapply(data, type.convert), stringsAsFactors=FALSE)

colnames(data)<-c("Choice")

data<-rownames_to_column(data)

last_columns<-colnames(data)    

columns_without_first<-last_columns[2:length(last_columns)]

converted_data<-as.character(unlist(data[1,]))

print(converted_data)

Ответы [ 2 ]

3 голосов
/ 21 марта 2019

Это потому, что ваш Choice аргумент factor.Когда вы делаете

data<-c("string")
data<-data.frame(lapply(data, type.convert), stringsAsFactors=FALSE)
colnames(data)<-c("Choice")

str(data)
#'data.frame':  1 obs. of  1 variable:
# $ Choice: Factor w/ 1 level "string": 1

Вместо этого

data<-c("string")
data <- data.frame(Choice = data, stringsAsFactors=FALSE)

str(data)
#'data.frame':  1 obs. of  1 variable:
# $ Choice: chr "string"

Так что после выполнения остальных шагов вы получите ожидаемый результат.

data<- tibble::rownames_to_column(data)
last_columns<-colnames(data)    
columns_without_first<-last_columns[2:length(last_columns)]
converted_data<-as.character(unlist(data[1,]))

converted_data
#[1] "1"      "string"
0 голосов
/ 21 марта 2019

Если мы сделаем as.is, это будет character

data <- c("string")
data <- data.frame(lapply(data, type.convert, as.is = TRUE), stringsAsFactors=FALSE)
colnames(data) <- "Choice"
str(data)
#'data.frame':  1 obs. of  1 variable:
#$ Choice: chr "string"

Или другой вариант retype из hablar

library(hablar)
data <- c("string")
data.frame(data) %>% 
     retype
# A tibble: 1 x 1
#   data  
#  <chr> 
#1 string
...