Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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 如何使用字符串访问数据框并修改数据框?_R_String_Dataframe_Assign - Fatal编程技术网

R 如何使用字符串访问数据框并修改数据框?

R 如何使用字符串访问数据框并修改数据框?,r,string,dataframe,assign,R,String,Dataframe,Assign,我得到了一个数据帧列表,比如c(df01,df02,df03) 每个数据帧有三列,c(“A”、“B”、“c”) 我想写一个for循环来修改每个数据帧的每一列。我试过: for (df in c("df01", "df02", "df03")) { for (col in c("A", "B", "C")) { get(df)[[col]] <- 0

我得到了一个数据帧列表,比如
c(df01,df02,df03)

每个数据帧有三列,
c(“A”、“B”、“c”)

我想写一个for循环来修改每个数据帧的每一列。我试过:

for (df in c("df01", "df02", "df03")) {
   for (col in c("A", "B", "C")) {
      get(df)[[col]] <- 0
   }
}
但这也不起作用。
assign()


如何修复此问题?

您可以在列表中获取数据帧,并使用
lappy
更改列

df_vec <- c("df01","df02","df03")
col_vec <- c("A","B","C")
result <- lapply(mget(df_vec), function(x) {x[col_vec] <- 0;x})

您可以在列表中获取数据帧,并使用
lappy
更改列

df_vec <- c("df01","df02","df03")
col_vec <- c("A","B","C")
result <- lapply(mget(df_vec), function(x) {x[col_vec] <- 0;x})

或者
lappy(mget(df_vec),replace,col_vec,0)
,因为
col_vec
默认选择列。@Ronak谢谢!!我让它工作了,但我得到了一个警告“要更换的项目数量不是更换长度的倍数”。你知道原因吗?我也想知道df[[colname]]和df[colname]有什么区别;使用双括号只能选择一个图元,使用单括号可以选择多个图元。这里有一个链接详细解释了这一点或
lappy(mget(df_vec),replace,col_vec,0)
,因为
col_vec
默认选择列。@Ronak谢谢!!我让它工作了,但我得到了一个警告“要更换的项目数量不是更换长度的倍数”。你知道原因吗?我也想知道df[[colname]]和df[colname]有什么区别;使用双括号只能选择一个图元,使用单括号可以选择多个图元。这里有一个链接详细解释了这一点,您是否有“data.frames列表”或“data.frames名称向量”"? 因为最好是有一个可以迭代的列表,这样就不必费心于
get/assign
——这些不是很像R的解决方案。如果你有一个列表,你可以在它上面进行变换。在元堆栈溢出问题中引用。你有一个“data.frames列表”还是一个“data.frames名称向量”"? 因为最好是有一个可以迭代的列表,这样就不必费心于
get/assign
——这些不是很像R的解决方案。若你们有一个列表,你们可以把它叠起来进行转换。参考元堆栈溢出问题。
list2env(result, .GlobalEnv)