我有(1)一个包含许多列(df
)的数据帧,(2)一个字符向量,其元素可能是也可能不是数据帧列的名称(search_for_these
), (3)包含字符串的字符,如果数据框包含指定的列(replace_with_these
),则该字符应替换上述向量的每个元素。
df <- data.frame(
dat = rep(1:2),
bat = seq(1:2),
cat = c("foo","bar"))
search_for_these <- c("dat", "bat", "shoe", "box")
replace_with_these <- c("cow", "bat2", "shoes", "boxes")
我的目标是将search_for_these
中找到的colnames(df)
的任何元素替换为replace_with_these
的相同索引中找到的值。因此,期望的结果是:
df <- data.frame(
cow = rep(1:2),
bat2 = seq(1:2),
cat = c("foo","bar"))
我考虑过使用dplyr::contains()
,但目前还不清楚如何实现这一点。
答案 0 :(得分:2)
虽然我们可以使用cellPrice.text
,但我们需要确保替换在初始数据帧中匹配的元素,而不是匹配向量的索引,这些索引可能引用主数据帧中的不同变量!
正如akrun所说,我们先self.dict[cell.cellPrice.text]
,然后我们使用子集if let price = cell.cellPrice.text, let priceValue = self.dict[price] {
self.totalLabel.text = "Total: \(priceValue)"
...
}
和match
替换包含匹配的主要向量的元素:
match
答案 1 :(得分:1)
我们可以使用match
i1 <- match(colnames(df), search_for_these, nomatch = 0)
colnames(df)[i1] <- replace_with_these[i1]