如何选择行并在具有不同长度元素的列表上使用Apply功能

时间:2019-02-08 02:18:46

标签: r list dataframe

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

1 个答案:

答案 0 :(得分:1)

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

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