不列出数据框会产生意外结果

时间:2019-03-21 00:15:46

标签: r dataframe vector character

请帮助解决以下代码为什么产生矢量(“ 1”,“ 1”)而不是预期的矢量(“ 1”,“ string”)以及解决方法。谢谢。

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 个答案:

答案 0 :(得分:3)

那是因为您的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"

答案 1 :(得分:0)

如果我们执行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