Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:用更改数据帧名称替换while循环中的列名_R_Parsing_Dataframe_Eval_Paste - Fatal编程技术网

R:用更改数据帧名称替换while循环中的列名

R:用更改数据帧名称替换while循环中的列名,r,parsing,dataframe,eval,paste,R,Parsing,Dataframe,Eval,Paste,我目前有一个while循环来读取HTML表,在每个循环中,我想将列名更改为当前数据帧的第一行。假设我有一个名为“df1”的数据帧。我可以通过以下代码实现这一点: colnames(df1) = unlist(df1[1,]) colnames(eval(parse(text=paste0("df",1)))) = unlist(eval(parse(text=paste0("df",1)))[1,]) 这很好,但是我不能在循环中指定df1,因为它可能是df1,df2,等等,这取决于I等于什么

我目前有一个while循环来读取HTML表,在每个循环中,我想将列名更改为当前数据帧的第一行。假设我有一个名为“
df1
”的数据帧。我可以通过以下代码实现这一点:

colnames(df1) = unlist(df1[1,])
colnames(eval(parse(text=paste0("df",1)))) = unlist(eval(parse(text=paste0("df",1)))[1,])
这很好,但是我不能在循环中指定
df1
,因为它可能是
df1
df2
,等等,这取决于
I
等于什么

我编写了以下代码:

colnames(df1) = unlist(df1[1,])
colnames(eval(parse(text=paste0("df",1)))) = unlist(eval(parse(text=paste0("df",1)))[1,])
出于测试目的,我将
I
替换为
1
,但我得到以下错误:
赋值目标扩展为非语言对象

如果我自己运行
colnames(eval(parse(text=paste0(“df”,1)))
,数据看起来与
colnames(df1)
相同,与
unlist(eval(parse(text=paste0(“df”,1)))[1,])相同。
看起来像
unlist(df1[1,])


在此方面的任何帮助都将不胜感激

请参阅gregor关于使用data.frames列表的回答。您应该遵循此建议并将这些data.frames读入列表。这将使使用它们变得更容易。嗨@lmo,我在while循环完成后将这些数据帧放入一个列表中。在这种情况下,我应该在while循环之外使用列名吗?如果更简单的话,我就这么做——我不知道我的问题是否有一个快速解决方案。如果重命名过程在data.frames中是统一的,那么将它们全部放入一个列表中,并以
lappy
或类似的方式执行重命名比
eval
/
parse
范例更有意义。Ok@lmo,我使用
df将我的数据帧放入一个列表中,您的
for
循环仅作用于项目1。将
用于(沿(df_lst)的序列中的i)
。此外,我还建议使用
df\u lst从data.frames构建列表请参见gregor关于使用data.frames列表的回答。您应该遵循此建议并将这些data.frames读入列表。这将使使用它们变得更容易。嗨@lmo,我在while循环完成后将这些数据帧放入一个列表中。在这种情况下,我应该在while循环之外使用列名吗?如果更简单的话,我就这么做——我不知道我的问题是否有一个快速解决方案。如果重命名过程在data.frames中是统一的,那么将它们全部放入一个列表中,并以
lappy
或类似的方式执行重命名比
eval
/
parse
范例更有意义。Ok@lmo,我使用
df将我的数据帧放入一个列表中,您的
for
循环仅作用于项目1。将
用于(沿(df_lst)的序列中的i)
。另外,我建议使用
df_lst从data.frames构建列表