在 R 中使用列表替换值

标签 r

我有一个很大的数据框,正在尝试计算许多问题的分数。这是一些示例数据。

Q1 = c("apple", "banana", "cider", "muffin", "chocolate")
Q2 = c("orange", "kiwi", "calzone", "cupcake", "cake")
ID = c("P1", "P2", "P3", "P4", "P5")

mydf = data.frame(Q1,Q2,ID)

answer_key = c("apple", "kiwi", "pizza", "dessert", "cake")

我一直在尝试对整个数据框使用 ifelse 和 %in%

mydf = ifelse(mydf %in% answer_key, 1,0)

但它不起作用,当我需要数据帧时它会返回一个向量。我只是想替换我的值,而不必对每个问题都这样做,因为有很多:

mydf$Q1 <-ifelse(mydf$Q1 == "apple", 1, 0)
mydf$Q2 <-ifelse(mydf$Q2 == "kiwi", 1, 0)

最佳答案

也许这就是您正在寻找的东西?

library(dplry)
mydf %>%
   mutate(across(Q1:Q2,~ +(. %in% answer_key)))
  Q1 Q2 ID
1  1  0 P1
2  0  1 P2
3  0  0 P3
4  0  0 P4
5  0  1 P5

或者基本 R 有点困惑:

mydf[,c("Q1","Q2")] <- sapply(mydf[,c("Q1","Q2")],function(x) +(x%in%answer_key))
mydf
  Q1 Q2 ID
1  1  0 P1
2  0  1 P2
3  0  0 P3
4  0  0 P4
5  0  1 P5

关于在 R 中使用列表替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67039293/

相关文章:

Roxygen2 跳过 .Rd 生成

r - 如何找到加权相关的 p 值?

R ggplot2 在传说中给出了口音

r - 创建具有透明颜色ggplot2的boxplots

r - 计算数据帧子集中数字的出现

r - float 条形图

用句点替换所有非字母数字

r - 错误: compilation failed for package ‘seqminer’

r - 生存无法识别正确的审查数据

r - 在 R 中使用 httr 通过 SSL 获取网站内容