R-为什么data.frame会将仅由数字组成的列转换为字符向量?

问题描述 投票:0回答:1

这是我制作的一个简单数据框,数据最初是pdf格式的,这就是为什么我先输入列名然后再输入行的原因。

skupni_indeksi <- data.frame(Proizvod =NA, Mjerna_jedinica=NA,Količine_2007=0,Količine_2008=0,Cijene_2007=0,Cijene_2008=0,stringsAsFactors = F)
skupni_indeksi[1,] <- c("A", "komad", 10, 12, 25, 30)
skupni_indeksi[2,] <-c("B", "litra", 30, 40, 40, 40)
skupni_indeksi[3,] <-c("C", "m2", 20, 15, 60, 72)

我知道还有其他输入此类数据的方法,但是我的问题与数据框的行为有关。例如,查看列Cijene_2007。它最初是一个数字,新行都将数字放入该列。使用str(skupni_indeksi)检查时,为什么字符类型的列呢?

我找到了一种手动解决方案,可以将所需的列简单地转换为数字:

skupni_indeksi[,3:6] <- sapply(skupni_indeksi[,3:6], as.numeric)

可解决此问题。我可以先做一些不同的事情而不需要此行吗?

r dataframe character numeric
1个回答
1
投票

c("A", "komad", 10, 12, 25, 30)是向量。向量只能具有一个类别。

由于您混合了数字和字符,因此将数字转换为字符。

class(c("A", "komad", 10, 12, 25, 30))
#[1] "character"

您正在以行方式填充数据框。通常,最好以列方式填充它们,以免发生这种数据转换。

© www.soinside.com 2019 - 2024. All rights reserved.