比较来自世界各地的卖家的域名和 IT 服务价格

获取对象的所有属性 R

我之前使用的函数用于获取对象的完整属性 R /我早些时候使用它来了解为什么两个看起来同样的数据帧没有通过 checkEquals RUnit/.

结构 /
str//

/ 和属性 /
attributes//

/ 他们同样看起来。 有人可以向我表明我的正确方向是显示对象完整属性的函数吗?
已邀请:

窦买办

赞同来自:

str

/具有可选的传输参数
vec.len

,
nhcar.max

等等。/ 它应该是顺序的。 E.g.:


> str/mtcars, vec.len=Inf/
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26 30.4 15.8 19.7 15 21.4
$ cyl : num 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4
$ disp: num 160 160 108 258 360 225 360 146.7 140.8 167.6 167.6 275.8 275.8 275.8 472 460 440 78.7 75.7 71.1 120.1 318 304 350 400 79 120.3 95.1 351 145 301 121
$ hp : num 110 110 93 110 175 105 245 62 95 123 123 180 180 180 205 215 230 66 52 65 97 150 150 245 175 66 91 113 264 175 335 109
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 3.92 3.07 3.07 3.07 2.93 3 3.23 4.08 4.93 4.22 3.7 2.76 3.15 3.73 3.08 4.08 4.43 3.77 4.22 3.62 3.54 4.11
$ wt : num 2.62 2.88 2.32 3.21 3.44 3.46 3.57 3.19 3.15 3.44 3.44 4.07 3.73 3.78 5.25 5.42 5.34 2.2 1.61 1.83 2.46 3.52 3.44 3.84 3.85 1.94 2.14 1.51 3.17 2.77 3.57 2.78
$ qsec: num 16.5 17 18.6 19.4 17 20.2 15.8 20 22.9 18.3 18.9 17.4 17.6 18 18 17.8 17.4 19.5 18.5 19.9 20 16.9 17.3 15.4 17.1 18.9 16.7 16.9 14.5 15.5 14.6 18.6
$ vs : num 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 0 1
$ am : num 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1
$ gear: num 4 4 4 3 3 3 3 4 4 4 4 3 3 3 3 3 3 4 4 4 3 3 3 3 3 4 5 5 5 5 5 4
$ carb: num 4 4 1 1 2 1 4 2 2 4 4 3 3 3 4 4 4 1 2 1 1 2 2 4 2 1 2 2 4 6 8 2


如果要比较两个对象 R 从 line-to-line, 你可以试试 diff 版本
dput

ed 这两个对象。


> dput/mtcars, file = 'mtcars'/
> mtcars2 <- mtcars
> mtcars2$am <- 0
> dput/mtcars2, file = 'mtcars2'/
> system/'diff mtcars mtcars2'/
23,25c23,25
< 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1/, am = c/1,
< 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
< 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1/, gear = c/4, 4, 4, 3,
---
> 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1/, am = c/0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/, gear = c/4, 4, 4, 3,


另一种方法可以是哈希对象或其部分的测试,一个简短的例子:


> library/digest/
> apply/mtcars, 2, digest/
mpg cyl
"6b33fae3fd79bb2081e21798c7001c1f" "fb8453e241dd708f9b17c412e94ab884"
disp hp
"feae4e282905d11380533c3cfa3fa997" "2afa2fea47856dc4fa23eb543f1d08a4"
drat wt
"345237ccc9e9b4f523ccdfde31e2f7c5" "558e5730ef0af2f50f23fe86363855ed"
qsec vs
"e777220d1d85545fd98767bb39f10967" "16ff5701471198a294b5c45a90dad3ca"
am gear
"abf0f4ab68322a6dd0fc078570892202" "7f9bb11d36a531de7ab0d6e71fd532c9"
carb
"793a7b0812e7597d508be29fc432ff49"


在这里你会得到 hash 每个列
mtcars

, 可以与数据的类似帧进行比较,并查看哪个列不同,例如:


> apply/mtcars, 2, digest/ == apply/mtcars2, 2, digest/
mpg cyl disp hp drat wt qsec vs am gear carb
TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE

要回复问题请先登录注册