r - 防止因子转换为水平
问题描述
我正在尝试使用lapply
并将do.call
列表组合成一个data.frame
对象。但是,如何防止因子转换为结果对象中的级别?插图:
dummy<-list(list(data.frame(A=c("Boy","He","Is","Cool"),
stringsAsFactors = T)),
list(data.frame(B=c("Boy","Not","So","Cool"),
stringsAsFactors = T)))
test1<-lapply(dummy,"[")
as.data.frame(do.call(cbind,test1))
问题:
V1 V2
1 1, 3, 4, 2 1, 3, 4, 2
忽略输出的性质,我怎样才能保持原来的“价值观”,即男孩、酷等?谢谢!期望的输出:
A B
contents contents
我无法事先知道列表的数量。我已经尝试过了,但它返回 NA:
plyr::ldply(test1,function(ele) do.call(cbind,ele))
解决方案
绝对没有进行任何转换:
out <- as.data.frame(do.call(cbind,test1))
out[[1]]
#[[1]]
# A
#1 Boy
#2 He
#3 Is
#4 Cool
但是我发现您的问题不清楚,因为您写了“忽略输出的性质”。而且您明确地在 to 中创建了因子data.frame
,所以我不确定您的期望是什么。请记住,factor
R 中的 s 是带有标签的整数向量。这就是你在印刷品中看到的。
编辑:
test1 <- lapply(dummy, "[[", 1)
as.data.frame(do.call(cbind, test1))
# A B
#1 Boy Boy
#2 He Not
#3 Is So
#4 Cool Cool
Edit2 从评论中的讨论来看,这些有什么用吗?
test1 <- lapply(dummy, unlist)
as.data.frame(do.call(cbind, test1))
# Same output as above
或者:
data.frame(unlist(test1, recursive = FALSE))
# Same output as above
推荐阅读
- c# - 为集成测试创建 LocalDB 测试数据库
- sql - 从 Oracle 数据库中的两个表中查询
- regex - '\' 后面跟一个非转义字符有什么作用?
- xamarin - 编译错误尝试通过 Xamarin Android 绑定项目绑定 ABBYY RTR SDK.AAR 文件
- excel - 在 excel 中搜索部分匹配项
- reactjs - 预期的模拟函数已被调用但未被调用
- javascript - 下拉 window.onclick javascript 仅适用于一个菜单
- javascript - AJAX查询:加载页面,成功前
- javascript - 添加子域后 Express 不再符合条件的路由
- javascript - 从 fetch 请求中更新了 setState Array