如何根据变量数(var1,var2等)自动调整R脚本

问题描述 投票:2回答:1

[主要数据集:

df <- data.frame(var1 =c(1, 2, 1), var2 = c(2, 3, 3))

我的映射表:

mt <- data.frame(var1 = c(1, 2, 1), var2 = c(2, 3,3), color = c('red', 'blue', 'yellow'))

将df合并到mt,保留df中的所有行:

df <- merge(x = df, y=mt, by=c("var1", "var2"), all.x = TRUE)

问题:如何动态更改代码,以便如果我有4个var(即var1,var2,var3,var4),则代码将自动调整为以下代码?

df <- merge(x = df, y=mt, by=c("var1", "var2", "var3", "var4"), all.x = TRUE)

类似地,如果我们有5个var,它将自动调整为:

df <- merge(x = df, y=mt, by=c("var1", "var2", "var3", "var4", "var5"), all.x = TRUE)

r string
1个回答
2
投票

如果两个数据集都具有与by中使用的相同的列名,那么我们就无需指定by,因为它通过匹配相交的列名来自动获取列。

merge(df, mt, all.x = TRUE)

但是,如果还有其他列,并且只想指定“ var”列,则选项为startsWith

merge(x = df, y=mt, by= names(df)[startsWith(names(df), "var")], all.x = TRUE)

grep

merge(x = df, y=mt, by= grep("^var\\d+$", names(df), value = TRUE), all.x = TRUE)
© www.soinside.com 2019 - 2024. All rights reserved.