gpt4 book ai didi

r - 应用 : Why does aaply(data, 2,class) 为所有列返回 "data.frame"?

转载 作者:行者123 更新时间:2023-12-02 05:43:11 26 4
gpt4 key购买 nike

我有一个关于aaply 的问题。我想检查 is.numeric 是哪一列,但是 aaply 的返回值有点出乎意料。下面是示例代码。为什么我得到所有列的 "data.frame"(这解释了为什么 is.numericFALSE,即使对于带有数字向量的列也是如此)?

谢谢!

data=data.frame(str=rep("str",3),num=c(1:3))

is.numeric(data[,1])
# FALSE
is.numeric(data[,2])
# TRUE

aaply(data,2,is.numeric)
# FALSE FALSE

aaply(data,2,class)
# "data.frame" "data.frame"

编辑:在其他情况下,这会产生一条警告消息:

aaply(data,2,mean)

# 1: mean(<data.frame>) is deprecated.
# Use colMeans() or sapply(*, mean) instead.

最佳答案

这是 aaply 的工作方式,您甚至可以使用 identity 查看传递给每个函数调用的内容,一个 data.frame 代表 的每一列数据:

aaply(data, 2, identity)
# $num
# num
# 1 1
# 2 2
# 3 3
#
# $str
# str
# 1 str
# 2 str
# 3 str

因此,按照您想要的方式使用 aaply,您将不得不使用一个函数来提取每个数据帧的第一列,例如:

aaply(data, 2, function(df)is.numeric(df[[1]]))
# num str
# TRUE FALSE

但这样做似乎更容易:

sapply(data, is.numeric)
# str num
# FALSE TRUE

关于r - 应用 : Why does aaply(data, 2,class) 为所有列返回 "data.frame"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10673771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com