dfs की सूची:
catbehave <- c("Good", "Cute", "Evil")
catnum <- c(1, 2, 3)
dogbehave <- c("Goodboi", "Cute")
dognum <- c(4, 2)
mousebehave <- c("Evil", "Good", "Cute")
mousenum <- c(3, 1, 2)
cat <- as.data.frame(cbind(catbehave, catnum))
dog <- as.data.frame(cbind(dogbehave, dognum))
mouse <- as.data.frame(cbind(mousebehave, mousenum))
list.1 <- list(cat = cat,dog = dog,mouse = mouse)
df1:
cat <- c("Good", "Evil", "Evil", "Cute")
dog <- c("Goodboi", "Goodboi", "Cute", "Goodboi")
mouse<- c("Evil", "Good", "Cute", "Evil")
df1 = data.frame(cat, dog, mouse)
मैं df1 में मान बदलने के लिए dfs की एक सूची का मूल्यांकन करना चाहता हूं। df1
में कॉलम के लिए list.1
में df's के नाम का उपयोग करने की आवश्यकता है
आउटपुट:
df1
cat dog mouse
1 4 3
3 4 1
3 2 2
2 4 3
3
gojomoso
25 अगस्त 2020, 17:32
3 जवाब
सबसे बढ़िया उत्तर
आप अपडेट जॉइन के लिए match
का उपयोग कर सकते हैं।
for(i in names(df1)) {
df1[,i] <- list.1[[i]][match(df1[,i], list.1[[i]][,1]), 2]
}
df1
# cat dog mouse
#1 1 4 3
#2 3 4 1
#3 3 2 2
#4 2 4 3
1
GKi
25 अगस्त 2020, 17:42
tidyverse
का उपयोग करके हम ऐसा कर सकते हैं
library(dplyr)
library(tibble)
library(purrr)
map2_dfc(df1, list.1, ~ deframe(.y)[.x])
# A tibble: 4 x 3
# cat dog mouse
# <chr> <chr> <chr>
#1 1 4 3
#2 3 4 1
#3 3 2 2
#4 2 4 3
1
akrun
25 अगस्त 2020, 19:31
एक आधार R
विकल्प, सूची 1 मानते हुए और df1 में कुछ क्रम है:
df1[] <- mapply(
function(x, y) x[y],
lapply(list.1, function(x) setNames(x[[2]], x[[1]])),
df1
)
df1
# cat dog mouse
# 1 1 4 3
# 2 3 4 1
# 3 3 2 2
# 4 2 4 3
2
sindri_baldur
25 अगस्त 2020, 17:39