您只需使用即可获得boxplot
boxplot(data02) #it will give a boxplot for each column
从帖子中,我假设您想模仿使用生成的输出
salaries_revised = c(33750, 44000, 138188, 45566.67, 44000)
str(salaries_revised)
#num [1:5] 33750 44000 138188 45567 44000
您不必手动复制元素以获得boxplot 输入数据集的正确格式。做吧:
salaries_revised <- data02[,"V1"]
或者
salaries_revised <- data02$V1
str(salaries_revised)
# num [1:5] 33750 44000 138188 45567 44000
关于您使用的paste 代码,它正在创建单个字符string
salaries <- paste(as.character(data02), sep = " ", collapse =",")
str(salaries)
# chr "c(33750, 44000, 138188, 45566.67, 44000)"
获得所需结果的一种方法是使用eval(parse(..
boxplot(eval(parse(text=salaries)))
你甚至不需要paste 来获取上面的字符串
as.character(data02)
#[1] "c(33750, 44000, 138188, 45566.67, 44000)"
boxplot(eval(parse(text=as.character(data02))))
此外,您将整个data.frame 用于paste。假设您的数据集有多个列。
data03 <- data02
data03$V2 <- 1:5
as.character(data03)
#[1] "c(33750, 44000, 138188, 45566.67, 44000)"
#[2] "1:5"
上面直接的eval(parse(..)只会返回最后一个元素
eval(parse(text=as.character(data03)))
#[1] 1 2 3 4 5
使用paste
salaries <- paste(as.character(data03), sep = " ", collapse =",")
salaries
#[1] "c(33750, 44000, 138188, 45566.67, 44000),1:5"
最终会出错。
boxplot(eval(parse(text=salaries)))
#Error in parse(text = salaries) : <text>:1:41: unexpected ','
如果您只需要V1 列
salaries <- paste(as.character(data03[,"V1", drop=FALSE]),
sep = " ", collapse =",")
默认情况下,当您尝试从数据集中对单个列进行子集化时,它会转换为 vector。因此,您可以通过指定drop=FALSE 来避免这种情况。
或者
salaries <- paste0("c(",paste(as.character(data03[,"V1"]),
sep=" ", collapse=","), ")")
salaries
#[1] "c(33750,44000,138188,45566.67,44000)"
数据
data02 <- structure(list(V1 = c(33750, 44000, 138188, 45566.67, 44000)),
.Names = "V1", class = "data.frame", row.names = c("1", "2", "3", "4", "5"))