使用r进行子集设置时未找到对象错误
假设我有几个数据,我想分别对它们进行子集划分使用r进行子集设置时未找到对象错误,r,R,假设我有几个数据,我想分别对它们进行子集划分 n = c(1, 1, 1) s = c(55, 56, 57) q = c(99, 100, 101) df_1 = data.frame(n, s, q) df_2 = data.frame(n, s, q) df_3 = data.frame(n, s, q) # assume they are the same. n s q 1 1 55 99 2 1 56 100 3 1 57 101 然后我创建一个循环来调用文件 fo
n = c(1, 1, 1)
s = c(55, 56, 57)
q = c(99, 100, 101)
df_1 = data.frame(n, s, q)
df_2 = data.frame(n, s, q)
df_3 = data.frame(n, s, q) # assume they are the same.
n s q
1 1 55 99
2 1 56 100
3 1 57 101
然后我创建一个循环来调用文件
for (h in 1:3){ # for loop the file
for (i in 1:1){ # i is for different values in column 'n'
Result <- paste('ResultFile_',h,sep="")
input <- paste('df_',h,sep="")
Result <- subset(input,subset=n==i)[,c(2,3)]
DO SOMETHING HERE....
}
}
当我直接将这一行中的'input'替换为'df1'子集(input,subset=n==I)[,c(2,3)]
,它就可以工作了
为什么 可以使用
get
函数传递字符串以调用对象。您可以尝试以下方法:
input <- get(paste("df_", h, sep = ""))
所有生成的数据帧现在都存储在
data\u list2
中。可以使用get
函数传递字符串以调用对象。您可以尝试以下方法:
input <- get(paste("df_", h, sep = ""))
所有生成的数据帧现在都存储在
data\u list2
中。在您的示例中,input
是使用paste()
生成的字符串(使用class(input)
进行验证)<代码>子集需要您传入data.frame。如果您有一组名为df_1
,df_2
,df_3
的变量,这通常表明您在R中“出错”。您的data.frames应该在一个列表中,这样做更容易。有关更好的解决方案,请参见此问题:在您的示例中,input
是使用paste()
生成的字符串(使用class(input)
验证)<代码>子集需要您传入data.frame。如果您有一组名为df_1
,df_2
,df_3
的变量,这通常表明您在R中“出错”。您的data.frames应该在一个列表中,这样做更容易。查看此问题以获得更好的解决方案:感谢get
方法,它工作得很好,@ycw,但是如何同时创建多个ResultFile_
文件?(在我的例子中是3个结果文件)。您可以使用mget
在列表中创建多个数据集
@BigSecrect,您可以尝试分配
功能。例如,在使用子集创建结果
数据帧后,添加以下代码赋值(粘贴('ResultFile',h,sep=“”),Result)
。感谢获取
方法,它工作正常,@ycw,但是如何同时创建多个结果文件
文件?(在我的例子中是3个结果文件)。您可以使用mget
在列表中创建多个数据集
@BigSecrect,您可以尝试分配
功能。例如,在使用子集创建结果
数据框后,添加以下代码赋值(粘贴('ResultFile',h,sep=“”),结果)
。
data_list <- list(df_1, df_2, df_3)
data_list2 <- lapply(data_list, subset, subset = s == 56)