有没有哪一天真的让你大吃一惊?我想我们都会从分享这些东西中获益。
下面是我的:在列表索引中,my.list[[1]]
不是my.list[1]
。在R的早期就学会了这一点。
发布于 2010-06-23 22:22:45
[哈德利指出这一点in a comment。]
当使用序列作为迭代的索引时,最好使用seq_along()
函数,而不是像1:length(x)
这样的函数。
这里我创建了一个向量,两种方法返回相同的东西:
> x <- 1:10
> 1:length(x)
[1] 1 2 3 4 5 6 7 8 9 10
> seq_along(x)
[1] 1 2 3 4 5 6 7 8 9 10
现在将向量设为NULL
> x <- NULL
> seq_along(x) # returns an empty integer; good behavior
integer(0)
> 1:length(x) # wraps around and returns a sequence; this is bad
[1] 1 0
这可能会在循环中造成一些混乱:
> for(i in 1:length(x)) print(i)
[1] 1
[1] 0
> for(i in seq_along(x)) print(i)
>
发布于 2009-10-08 02:54:14
加载数据时自动创建系数。您不假思索地将数据框中的列视为字符,这种做法很有效,直到您尝试将值更改为不是级别的值。这将生成一个警告,但会让您的数据框中包含NA ...
当R脚本中出现意外错误时,检查一下不是这些因素造成的。
发布于 2009-10-08 02:02:04
在将矩阵设置为一维的子集中忘记了drop=FALSE参数,从而也丢弃了对象类:
R> X <- matrix(1:4,2)
R> X
[,1] [,2]
[1,] 1 3
[2,] 2 4
R> class(X)
[1] "matrix"
R> X[,1]
[1] 1 2
R> class(X[,1])
[1] "integer"
R> X[,1, drop=FALSE]
[,1]
[1,] 1
[2,] 2
R> class(X[,1, drop=FALSE])
[1] "matrix"
R>
https://stackoverflow.com/questions/1535021
复制相似问题