我使用以下命令导入了一个在多列中包含标题和数字的文件。irs_data <- read.csv(file="10incyallnoagi.csv")
我想将 1 列中的值除以另一列中的值,然后确定最高的 3 个值。
salary_var <- c(irs_data[13]/irs_data[12])
head(sort(new_var, decreasing=TRUE), 3)
我不断收到持续的错误。作为初学者R,在这种情况下“x 必须是原子的”是什么意思。
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) :
'x' must be atomic
问题是salary_var
是一个包含单个元素的列表。致电给sort()
然后尝试对列表而不是原子元素进行排序。你可以看到salary_var
是一个运行列表str(salary_var)
。如果您省略c()
,您最终会得到一个只有一列的数据框,这会带来同样的问题。
两个简单的解决方案:
要对列表元素中的值进行排序,请使用
head(sort(salary_var[[1]], decreasing=TRUE), 3)
其中 [[1]] 选择列表的第一个元素并对其中的值进行排序。
或者,创建salary_var
显式地作为数值向量来代替:
salary_var <- (irs_data[13]/irs_data[12])[[1]]
请注意:在您的帖子中,您写道new_var
代替salary_var
在你的电话中sort()
这可能会让其他读者感到困惑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)