我想在不丢失数据类型信息的情况下(即不将TRUE / FALSE设置为1/0的情况下)转置具有逻辑和数字变量的数据帧
这是我的代码:
xx <- data.frame(
v1 = 200,
v2 = 2,
v3 = FALSE
)
# v1 v2 v3
# 200 2 FALSE
t(xx)
# [,1]
#v1 200
#v2 2
#v3 0
相反,我想得到:
t(xx)
# [,1]
#v1 200
#v2 2
#v3 FALSE
我的最后一个监狱是要用rhandsontable将数据框显示为有光泽,以便对其进行修改,然后将其保存在csv文件中。由于我有一个多列只有两行的数据框,因此我想转置数据以更好地可视化。在保存之前,我再次将它们换位。 我能做什么? 谢谢您的帮助!
答案 0 :(得分:0)
我得益于Markus提出的想法
首先,我将数据类型保存在向量中
dat_type <- sapply(DF, class)
然后我转置数据帧
xx <- as.data.frame(t(xx), stringsAsFactors = F)
我用rhonsontable对其进行了修饰,然后在保存之前将其转置回去
xx <- as.data.frame(t(xx))
我使用受此问题启发的函数(Assign data types to each column of a data frame in R)为每一列设置正确的数据类型
data.type.assign <- function(xx, dat_type){
for(col_ind in 1:ncol(xx)){
switch (dat_type[col_ind],
"numeric" = {xx[,col_ind] <- as.numeric(xx[,col_ind])},
"character" = {xx[,col_ind] <- as.character(xx[,col_ind])},
"logical" = {xx[,col_ind] <- as.logical(xx[,col_ind])},
"integer" = {xx[,col_ind] <- as.integer(xx[,col_ind])}
)
}
xx
}
像这样
xx <- data.type.assign(xx, dat_type)
仅此而已。现在,我将其另存为csv文件。也许有更快的方法可以做到这一点,但是这一方法相当不错。