R 数据框中的数值
我有以下数据框,我使用它调用列R 数据框中的数值,r,dataframe,R,Dataframe,我有以下数据框,我使用它调用列p.inits中所有值的函数,并使用cols中的相应颜色绘制它们 p.inits = c(0.5, 0.1, 0.9) cols = c("red", "green", "blue") data = data.frame(cbind(p.inits, cols)) foo = function (x) { print(1:x) } for (i in 1:nrow(data)) { print(data$p.inits[i] } 函数foo显示某些东西没有
p.inits
中所有值的函数,并使用cols
中的相应颜色绘制它们
p.inits = c(0.5, 0.1, 0.9)
cols = c("red", "green", "blue")
data = data.frame(cbind(p.inits, cols))
foo = function (x) { print(1:x) }
for (i in 1:nrow(data)) {
print(data$p.inits[i]
}
函数foo
显示某些东西没有按我预期的方式工作,因为输出是:
[1] 1 2
[1] 1
[1] 1 2 3
另外,p.inits
的计算结果为[1]0.50.10.9
,而数据$p.inits
的计算结果为该系数:
[1] 0.5 0.1 0.9
Levels: 0.1 0.5 0.9
我的问题是:在上帝的绿色地球上发生了什么?为什么列p.inits
不是数字?我只想访问值0.5、0.1、0.9
as.numeric(as.vector(data$p.inits))
实现了这一点,但这似乎过于复杂了。这真的是正确的方法吗
谢谢。创建
data.frame
最好是使用data.frame
单独调用,而不是使用cbind
转换到matrix
,然后转换到data.frame
。问题在于矩阵
如何存储元素,因为在矩阵
中通常只允许一个类
。这里有一个character
列,因此我们将所有元素转换为character
。当我们转换为data.frame
时,默认选项stringsAsFactors=TRUE
将字符
类转换为因子
,这就是我们拥有所有因子
类的原因
data <- data.frame(p.inits, cols)
不要执行
data.frame(cbind
),只需执行data.frame即可(p.inits
。您首先使用cbind
转换为矩阵,当转换为data.frame
时,字符
类更改为因子
,默认情况下stringsafactors=TRUE
并获得解决我问题的因子
类。谢谢如果你把这个作为回答,我会接受的。
data <- data.frame(p.inits, cols, stringsAsFactors= FALSE)