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)