我在创建数据的箱形图时遇到问题,因为我的一个变量是列表形式。 我正在尝试创建一个箱线图:
boxplot(dist~species, data=out)
并收到以下错误:
Error in model.frame.default(formula = dist ~ species, data = out) :
invalid type (list) for variable 'species'
我没有成功地将'物种'强加成一个因素:
out[species]<- as.factor(out[[out$species]])
并收到以下错误:
Error in .subset2(x, i, exact = exact) : invalid subscript type 'list'
如何将“物种”列转换为可用于创建箱线图的因子?感谢。
编辑:
str(out)
'data.frame': 4570 obs. of 6 variables:
$ GridRef : chr "NT73" "NT80" "NT85" "NT86" ...
$ pred : num 154 71 81 85 73 99 113 157 92 85 ...
$ pred_bin : int 0 0 0 0 0 0 0 0 0 0 ...
$ dist : num 20000 10000 9842 14144 22361 ...
$ years_since_1990: chr "21" "16" "21" "20" ...
$ species :List of 4570
..$ : chr "C.splendens"
..$ : chr "C.splendens"
..$ : chr "C.splendens"
.. [list output truncated]
答案 0 :(得分:3)
很难想象你是如何将数据放到这个表单中的,但它看起来像是
out <- transform(out,species=unlist(species))
应该解决你的问题。
set.seed(101)
f <- as.list(sample(letters[1:5],replace=TRUE,size=100))
## need I() to make a wonky data frame ...
d <- data.frame(y=runif(100),f=I(f))
## 'data.frame': 100 obs. of 2 variables:
## $ y: num 0.125 0.0233 0.3919 0.8596 0.7183 ...
## $ f:List of 100
## ..$ : chr "b"
## ..$ : chr "a"
boxplot(y~f,data=d) ## invalid type (list) ...
d2 <- transform(d,f=unlist(f))
boxplot(y~f,data=d2)