【发布时间】:2016-07-31 05:52:18
【问题描述】:
出于好奇,我正在测试递归 lapply 是否给我与手动应用函数相同的结果。我发现 lapply 行为不规律。所以,这就是我所做的:
示例 1:
m<-c(2,3,4)
n<-c(5,6,3)
o<-c(1,1,1.5)
dc<-data.frame(m,n,o)
现在,让我们来分析一下有趣的部分:
lapply(dc,mode)
给予:
lapply(dc,mode)
$m
[1] "numeric"
$n
[1] "numeric"
$o
[1] "numeric"
让我们分别比较上面的结果运行模式,比如“m”。
mode(dc$m)
我明白了:
"numeric"
其他人也一样。这一切都很好,因为我们有原子向量。
现在,让我们分析另一个例子:
示例 2:
a<-c(2,3,4,5,5,3)
b<-c(0,1,1,0,1,0)
b<-factor(b,levels = c(0,1),labels = c("F","M"))
c<-c("Hello","Hi")
datacheck<-data.frame(a,b,c)
现在,我将“str”函数分别应用于 a、b 和 c。
str(datacheck$b)
Factor w/ 2 levels "F","M": 1 2 2 1 2 1
str(datacheck$c)
Factor w/ 2 levels "Hello","Hi": 1 2 1 2 1 2
str(datacheck$a)
num [1:6] 2 3 4 5 5 3
这一切都很好,因为 b 和 c 是因素。 "a" 只是一个数字数组。
现在,当我运行 lapply 时,我得到:
lapply(datacheck,str)
num [1:6] 2 3 4 5 5 3
Factor w/ 2 levels "F","M": 1 2 2 1 2 1
Factor w/ 2 levels "Hello","Hi": 1 2 1 2 1 2
$a
NULL
$b
NULL
$c
NULL
我的问题是:当我们独立运行 str() 命令时,为什么 $a、$b 和 $c 为 NULL 而不是数字?我在 SO 上环顾四周,还阅读了 ?lapply,但找不到答案。
感谢您的想法。
【问题讨论】: