R循环遍历数据表生成词云时$运算符对原子向量无效问题
问题原因
你报错的核心是用错了存储多个数据框的容器:
R的c()函数不会把多个数据框当成独立元素保存,而是会把每个数据框拆解为单独的列,平铺拼接成一个扁平的向量结构,你遍历的时候拿到的i是单列的原子向量,自然无法用$操作符取其他列。
解决方法
第一步:更换存储容器为list()
list()才是R中用来存储多个独立数据框/对象的正确结构,把你的第一行代码修改为:
speech <- list(fed_df_d_1985,fed_df_d_1995,fed_df_d_2005,fed_df_d_2015,fed_df_r_1985,fed_df_r_1995,fed_df_r_2005,fed_df_r_2015)
第二步:调整循环写法
如果需要修改原列表里存储的数据框内容,推荐遍历索引+双中括号[[的形式取出完整数据框,就能正常使用$操作符:
for (i in seq_along(speech)) { # 替换列值中的下划线 speech[[i]]$variable <- gsub("_", " ", speech[[i]]$variable) # 生成词云 wordcloud(word = speech[[i]]$variable[1:20], freq = speech[[i]]$D[1:20]) }
如果不需要修改原列表内容,也可以直接遍历列表元素:
for (df in speech) { df$variable <- gsub("_", " ", df$variable) wordcloud(word = df$variable[1:20], freq = df$D[1:20]) }
内容的提问来源于stack exchange,提问作者Hoa Nguyen
相关产品推荐
相关产品推荐

