请帮助解决以下代码为什么产生矢量(“ 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)
答案 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