这是我的R代码
v2 = 1:10
v3 = c('numeric',length(v2))
for( i in 1:length(v2)) {
v3[i] = log(v2[i])
}
v3
# [1] "0" "0.693147180559945" "1.09861228866811" etc
而且,似乎数据是字符串。这是为什么? v2是一个数字向量。
答案 0 :(得分:4)
问题在于您v3
v3 <- c('numeric',length(v2))
v3
#[1] "numeric" "10"
这会将class
的{{1}}设置为&#34;字符&#34;当您将一串文本(字面意为v3
)加入数值("numeric"
或length(v2)
)时,请尝试10
。这也意味着添加到矢量中的任何数字也会被强制转换为字符:
class(v3)
将转换为哪些向量的层次结构 - 请参阅:https://stackoverflow.com/a/17030209/496803 - 字符&gt;复杂&gt;数字&gt;整数&gt;逻辑&gt;生的。
相反,你想:
v3 <- c('numeric',length(v2))
v3[1] <- 1
v3
#[1] "1" "10"
所有这一切当然都错过了房间里的大象,v3 <- numeric(length(v2))
v3
#[1] 0 0 0 0 0 0 0 0 0 0
将一次性沿着整个数字向量行动(&#34;向量化&#34;):
log