使用apply提取时,数据框数字列强制转换为字符向量

时间:2014-01-28 22:43:45

标签: r dataframe apply

考虑以下示例:

data <- data.frame(a = c("a", "b", "c"), b = 1:3, stringsAsFactors = FALSE)

data$b
# [1] 1 2 3

apply(data, 1, function(i) i['b'])
# [1] "1" "2" "3"

class(data$b)
# [1] integer

class(apply(data, 1, function(i) i['b']))
# [1] character

apply(data, 1, function(i) class(i['b']))
# [1] "character" "character" "character"

当数据框仅包含整数类列时,不会发生这种情况。据我所知,apply强制输出到最小分母(示例中的字符)而不是实际输出(示例中的整数)。但是,这似乎发生在FUN中定义的闭包内(可以在上一个命令中看到。)

这是一个错误还是这个预期的行为?如果这确实是一个设计规范,有人可以向我解释这有什么意义吗?有没有办法解决这个问题,而不必在每个函数定义中添加as.integer转换?

提前致谢!

0 个答案:

没有答案