首页 > 解决方案 > 如何在具有不同长度元素的列表上选择行并使用应用功能

问题描述

a <- list( G1 = data.frame(age = "8", gender = "M"), 
           G2 = data.frame(age = c("10","11"), gender = c("M", "F")), 
           G3 = data.frame(age = c("9","6"), gender = c("F", "F")) )

如图所示,所有变量都输入为字符,然后我希望age在保持gender为字符的同时恢复为数字。运行lapply,我得到了让我很困惑的结果。怎么了?

lapply(a, function(x) {x[,1] <- as.numeric(x[,1])} )

$G1
[1] 1

$G2
[1] 1 2

$G3
[1] 2 1

标签: rlistdataframe

解决方案


按照您的方法,您可以将第一列转换为数字,然后返回完整的数据框,而不仅仅是 1 列。

a[] <- lapply(a, function(x) {
    x[,1] <- as.numeric(as.character(x[,1]))
    x
})

推荐阅读