首页 > 解决方案 > R:在函数(x,y)中找不到对象y [通过r中的数据帧的函数]

问题描述

我正在编写一个函数来基于现有数据帧构建新数据帧。所以我基本上有

f1 <- function(x,y) {

x_adj <- data.frame("DID*"= df.y$`DM`[x], "LDI"= df.y$`DirectorID*`[-(x)], "LDM"= df.y$`DM`[-(x)], "IID*"=y)

}

我有 4,000 个数据帧 df.,所以我真的需要使用它,而 R 返回一个错误,指出找不到 df.y。y 旨在通过不同 df 的所有 4000 个名称的列表来使用。我在 R 很新,所以任何帮助都将不胜感激。

如果需要更多细节,我基本上有类似的东西

df.1 <- data.frame(x = 1:3, b = 5)

结果我需要以下使用函数

df.11 <- data.frame(x = 1, c = 2:3, b = 5)
df.12 <- data.frame(x = 2, c = c(1,3), b = 5)
df.13 <- data.frame(x = 3, c = 1:2, b = 5)

提前致谢!

标签: rdataframe

解决方案


OP 似乎data.frame使用动态名称访问。

一种选择是使用get

get(paste("df",y,sep = "."))

以上get将返回df.1

因此,函数可以修改为:

f1 <- function(x,y) {
  temp_df <- get(paste("df",y,sep = "."))
  x_adj <- data.frame("DID*"= temp_df$`DM`[x], "LDI"= temp_df$`DirectorID*`[-(x)],
  "LDM"= temp_df$`DM`[-(x)], "IID*"=y)

}

推荐阅读