R - log()函数将数字转换为字符串?

时间:2015-03-13 01:17:06

标签: r

这是我的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是一个数字向量。

1 个答案:

答案 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