use*_*817 5 r input import-from-csv
我使用以下命令在多列中导入了标题和数字的文件.
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)
Run Code Online (Sandbox Code Playgroud)
我不断得到不断的错误.作为R的初学者,在这种情况下,"x必须是原子的"是什么意思.
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) :
'x' must be atomic
Run Code Online (Sandbox Code Playgroud)
小智 9
问题是这salary_var是一个包含单个元素的列表.然后调用sort()是尝试对列表进行排序,而不是原子元素.您可以salary_var通过运行查看该列表str(salary_var).如果省略c(),则最终会得到一个包含单列的数据框,这会产生同样的问题.
两个简单的解决方
要对列表元素中的值进行排序,请使用
head(sort(salary_var[[1]], decreasing=TRUE), 3)
Run Code Online (Sandbox Code Playgroud)
其中[[1]]选择列表的第一个元素并对其中的值进行排序.
或者,salary_var明确地创建为数字向量:
salary_var <- (irs_data[13]/irs_data[12])[[1]]
Run Code Online (Sandbox Code Playgroud)
一个注意事项:在你的帖子中,你写的new_var不是salary_var在你的电话中,sort()这可能会混淆其他读者.
小智 6
您可以使用unlist()将列表转换为向量,因为sort() 函数采用向量形式进行排序。所以只需使用
head(sort(unlist(new_var), decreasing=TRUE), 3)
Run Code Online (Sandbox Code Playgroud)