R df[,1:3]与df[,i:i+;2]之间的差异,i=1
我有一个数据帧R df[,1:3]与df[,i:i+;2]之间的差异,i=1,r,R,我有一个数据帧df1,如下所示。当我打印(df1[,1:3])时,我得到了我期望的前3列。但是当我使用I=1时;打印(df1[,i:i+2])我只能得到第三列。有人知道原因吗 t.x t.y t.Freq prop.row.x prop.row.y prop.row.Freq prop.col.x 1 Female None 25 Female None 0.4237288 Female 2 Male None 17
df1
,如下所示。当我打印(df1[,1:3])
时,我得到了我期望的前3列。但是当我使用I=1时;打印(df1[,i:i+2])
我只能得到第三列。有人知道原因吗
t.x t.y t.Freq prop.row.x prop.row.y prop.row.Freq prop.col.x
1 Female None 25 Female None 0.4237288 Female
2 Male None 17 Male None 0.6800000 Male
3 Female Some 12 Female Some 0.2033898 Female
4 Male Some 2 Male Some 0.0800000 Male
5 Female Marked 22 Female Marked 0.3728814 Female
6 Male Marked 6 Male Marked 0.2400000 Male
区别在于
2
被添加到i:i
(对于i=1
,它是1
),因为:
的求值优先级高于+
要按正确的顺序计算,冒号运算符的第二个参数需要括号,即
> i = 1L
> i:i + 2L
[1] 3
> i:(i + 2L)
[1] 1 2 3
该系统具有以下功能:
优先规则记录在?语法中,并查看R如何解释表达式
您可以查看解析树
所以你可以用你的表情来表达:
> as.list(quote(i:i+2))
[[1]]
`+`
[[2]]
i:i
[[3]]
[1] 2
我鼓励您查看
?语法,以更全面地了解R中运算符的优先级。:
优先于+
,因此您可以得到1+2
的含义。。。试试i:(i+2)
。或者i+0:2
这是圆圈8.1.3:在@Mindy中的优先级一般来说,我发现seq()
比:
省钱多了。
> as.list(quote(i:i+2))
[[1]]
`+`
[[2]]
i:i
[[3]]
[1] 2