file_1<-function(x)
{
x<-data.frame(x)
for(i in 1:ncol(x))
{
if(class(x[ , i])=="character"){
x<-factor(x[, i])
}
}
par(mfrow=c(ceiling(ncol(x)/2),2))
for(i in 1:ncol(x)){
if(class(x[,i])=="factor")
plot(x[, i], xlab=paste(colnames(x[i])))
}
else if(class(x[ ,i]=="numeric") {
hist(x[ , i] , main=NULL, xlab=paste(colnames(x[, i])))
}
}
}
x 是一個檔案,函式 data.frames 和因子檔案并制作繪圖和直方圖
uj5u.com熱心網友回復:
你的大括號和括號不合適。即,
for(i in 1:ncol(x)){
if(class(x[,i])=="factor")
plot(x[, i], xlab=paste(colnames(x[i])))
}
else if(class(x[ ,i]=="numeric") {
hist(x[ , i] , main=NULL, xlab=paste(colnames(x[, i])))
}
內部問題是if(class(x[ ,i]=="numeric")應該改為if(class(x[ ,i])=="numeric").
外部問題是,使用{...}大括號,您正在嘗試for (...) { ... } else { ... }. 我相信你else的意思是在for回圈中,在if.
嘗試將此作為對決議錯誤的文字修復。
file_1 <- function(x) {
x <- data.frame(x)
for (i in 1:ncol(x)) {
if (class(x[ , i]) == "character"){
x <- factor(x[, i])
}
}
par(mfrow = c(ceiling(ncol(x)/2), 2))
for (i in 1:ncol(x)){
if (class(x[,i]) == "factor") {
plot(x[, i], xlab = paste(colnames(x[i])))
} else if (class(x[ ,i]) == "numeric") {
hist(x[ , i] , main = NULL, xlab = paste(colnames(x[, i])))
}
}
}
也許接受這個改變的版本:
file_1 <- function(x) {
ischr <- sapply(x, is.character)
x[ischr] <- lapply(x[ischr], factor)
par(mfrow = c(ceiling(ncol(x)/2), 2))
for (i in seq_along(x)) {
if (is.factor(x[,i])) {
plot(x[,i], xlab = colnames(x)[i])
} else {
hist(x[,i], main = NULL, xlab = colnames(x)[i])
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420147.html
標籤:
上一篇:sapply多列和資料框
