У меня есть вложенный список (mylist
), и я хотел бы автоматически cbind
фрейм данных (colors
) перейти к списку более низкого уровня (iris
), только если имя списка содержит определенныйстрока (iris
), но я сталкиваюсь с несколькими ошибками.
Пример:
mylist <- list(favorites=list("iris"=iris[1:5,], "mtcars"=mtcars[1:5,], "ToothGrowth"=ToothGrowth[1:5,]), misc = list("air"=airquality))
colors <- data.frame(dark = "black", light = "white", mid = "violet")
Я хотел бы добавить colors
только во вложенный список, iris
, по существу: cbind(mylist$favorites$iris, colors)
.Мой реальный набор данных намного больше, и ручное использование cbind
в каждом вложенном списке невозможно.
Так, что:
> cbind.fill(mylist$favoritres$iris, colors)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species dark light mid
1 5.1 3.5 1.4 0.2 setosa black white violet
2 4.9 3.0 1.4 0.2 setosa black white violet
3 4.7 3.2 1.3 0.2 setosa black white violet
4 4.6 3.1 1.5 0.2 setosa black white violet
5 5.0 3.6 1.4 0.2 setosa black white violet
Моя текущая попытка решения:
mylist <- lapply(mylist, function(x) {
if(grepl("iris", x$favorites)==TRUE){
x$favorites <- lapply(x$favorites, function(y) cbind(y, colors))
}; x
})
Что выдает ошибку:
Ошибка в if (grepl ("iris", x $ Favorites) == TRUE) {: аргумент имеет нулевую длину