R - 为什么 data.frame 将仅由数字组成的列转换为字符向量?
R - Why does a data.frame turn columns consisting only of numbers into a character vector?
这是我制作的一个简单的数据框,数据最初是 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)
这解决了问题。我可以先做一些不同的事情来不需要这条线吗?
c("A", "komad", 10, 12, 25, 30)
是一个向量。一个向量只能有一个class。
由于您混合了数字和字符,因此它将数字转换为字符。
class(c("A", "komad", 10, 12, 25, 30))
#[1] "character"
您正在按行方式填充数据框。通常,最好按列填充它们,这样就不会发生这种数据转换。
这是我制作的一个简单的数据框,数据最初是 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)
这解决了问题。我可以先做一些不同的事情来不需要这条线吗?
c("A", "komad", 10, 12, 25, 30)
是一个向量。一个向量只能有一个class。
由于您混合了数字和字符,因此它将数字转换为字符。
class(c("A", "komad", 10, 12, 25, 30))
#[1] "character"
您正在按行方式填充数据框。通常,最好按列填充它们,这样就不会发生这种数据转换。