【发布时间】:2017-03-17 14:47:11
【问题描述】:
我正在处理包含两列客户 ID ('Custid') 和收入 ('Income') 的数据框 ('df_temp'):
Custid Income
<fctr> <dbl>
1 1003 29761.20
2 1004 98249.55
3 1006 23505.30
4 1007 72959.25
5 1009 114973.95
6 1010 25038.30
在检查收入是否为数字时,我遇到了以下问题:
使用 $ 表示收入,返回 TRUE:
> is.numeric(df_temp$Income)
[1] TRUE
使用 [,2] 或 [,which(...)] 表示收入,返回 FALSE:
> i <- which(names(df_temp)=='Income')
> is.numeric(df_temp[,i])
[1] FALSE
> is.numeric(df_temp[,2])
[1] FALSE
当尝试使用 [,] 将此向量设置为数值时,我遇到了另一个问题:
> df_temp[,2] <- as.numeric(df_temp[,2])
Error: (list) object cannot be coerced to type 'double'
我一直认为 $ 和 [] 在引用数据框中的向量时具有相同的目的。
有人可以帮助我理解问题并使用 [,] 表达式将此向量转换为数字吗?
【问题讨论】:
-
你有一个
tb_df对象 -
str(df_temp[,2])的结果是什么? -
@jogo,它是:类“tbl_df”、“tbl”和“data.frame”:2431 obs。 1 个变量:$ 收入:num 29761 98250 23505 72959 114974 ...
-
从您的输出中,您没有使用 data.frame 对象。最有可能的是,hadley 对如何引用此类对象进行了一些更改。您应该列出您在问题中使用的所有相关软件包的名称。
-
@JanBenedikt 所以你看:它不是一个数字向量。
df_temp不是数据框对象![对象上的操作方式与数据帧不同。查看 akrun 或 Joshua 的答案!