不幸的是,我无法在这里找到我的问题的解决方案;因此,这个新问题。
以下是我要做的事情:
使用set.seed(1234)
Date <- seq(as.Date("1990-01-01"), as.Date("1990-12-01"), "months")
Date <- rep(Date, 5)
Species <- rep(c("cat", "lion", "tiger", "leopard", "cheetah"), each=12)
Measurement <- rnorm(60)
index <- sample(1:60, 10)
myData <- data.frame(Date[-index], Species[-index], Measurement[-index])
包从维基百科中读入表格并将其放入数据框中。到现在为止还挺好。现在,我想将chr项转换为带有as.numeric的num,而不是每列中的第一列和第一行。
xml2
代码运行时没有任何错误但保持chr项不变。我做错了什么?
答案 0 :(得分:2)
这是因为data.frame
的每一列都是一个向量,并且向量的所有元素必须是相同的类型。由于您没有将所有元素更改为键入数字,因此整个向量的类仍为chr
。请参阅下面的示例。
vector<-c("a", as.numeric(1), as.numeric(3), as.numeric(5))
str(vector)
chr [1:4] "a" "1" "3" "5"
vector[2:4]<-as.numeric(vector[2:4])
str(vector)
chr [1:4] "a" "1" "3" "5"
如果您尝试了类似vector<-as.numeric(vector)
的内容,那么您将获得:
Warning message:
NAs introduced by coercion
您将丢失存储在矢量中的一些信息。
str(vector)
num [1:4] NA 1 3 5
答案 1 :(得分:0)
感谢您的评论!
我能够通过子集来解决它:
uebergewicht <- read_html("https://de.wikipedia.org/wiki/%C3%9Cbergewicht")
uebergewicht <- uebergewicht %>%
html_nodes("table") %>%
.[[2]] %>%
html_table(fill=TRUE)
ueber_sub <- uebergewicht[2:6, 2:5]
names(ueber_sub) <- c("jungen.ueber", "jungen.adi", "mädchen.ueber", "mädchen.adi")
for (i in 1:4){
ueber_sub[,i] <- as.numeric(ueber_sub[,i])
}
> str(ueber_sub)
'data.frame': 5 obs. of 4 variables:
$ jungen.ueber : num 6.4 8.9 11.3 9 8.8
$ jungen.adi : num 2.5 7 7 8.2 6.3
$ maädchen.ueber: num 6 9 11.6 8.1 8.5
$ maädchen.adi : num 3.3 5.7 7.3 8.9 6.4
通过子集化,我们摆脱了每列的第一行,这将导致列向量保持chr。我只是重新编码列名以反映第1行的信息。这样,进入for循环的所有内容都转换为num。
顺便说一句,我对包裹没有任何问题。