问题描述
我有几个向量命名为:aa、bb、ab、ac 等。
我想使用它们的名称(“01”、“02”、“03”、“04”等)来将向量与 df 匹配。
但是我收到一个错误,因为 names(i)
不起作用,因为(如果 i names("aa"),而不是:names(aa)
。
怎么解决?
noquote(i)
有效,但不是内部名称:names(noquote(i))
。这产生了一个错误。
x <- c("aa","bb","ab","ac")
names(x) <- c("01","02","03","04")
for (i in x) {
df[match(names(i),df$ID),i] <- noquote(i)
}
######################################
示例:
df <- data.frame(ID = c("01","03"),var_1 = c(0,1,1),var_2 = c(0,0),var_3 = c(1,0))
aa <- tapply(df$var_1,df$ID,max,na.rm = T)
bb <- tapply(df$var_2,na.rm = T)
cc <- tapply(df$var_3,na.rm = T)
在 df_2 中,每个 ID 只有一行,我想在 df_2 中包含我用 tapply 创建的向量。
df_2 <- data.frame(ID=c("01",age=c(34,12,49))
为了与 ID 完全匹配,我使用了以下代码:
df_2[match(names(aa),df_2$ID),"aa"] <- aa
df_2[match(names(bb),"bb"] <- bb
df_2[match(names(cc),"cc"] <- cc
为了避免这种重复的代码,我试图使用这个代码(我在文章开头写的):
x <- c("aa","cc")
for (i in x) {
df_2[match(names(i),i] <- noquote(i)
}
但我对 names(i)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)