执行函数后我有以下数据结构:
public static void Main(string[] args)
{
int size=20;
for(int i=0;i<size;i++){
for(int j=0;j<size;j++){
if((i+j>=size/2-1 && i<=size/2-1 && j-i<=size/2-1) ||
(i==size/5 && j<size-1)||
(i-j<=size/5 && j<size/2 && i>size/5)||
(i+j<=size+((size-10)/5) && j>=size/2 && i>size/5))
Console.Write("*");
else
Console.Write(" ");
}
Console.WriteLine("");
}
}
作为最终结果,我希望将数据放在一个简单的数据框中,其中字母为行中的值和值。以下工作,虽然我很好奇这是否是最优雅的方式(?):
A B C D E
92.08 90.68 54.09 92.87 97.40
F G H I J ...
24.52 67.24 15.63 22.33 45.10 ...
如果你有想法让它变得更好,请随时纠正我。
output <- data.frame(output)
output <- data.frame(rownames(output), rowSums(output))
colnames(output) <- c("Category", "Value")
output
output %>% arrange(desc(output))
解决方案表示赞赏。
谢谢!
答案 0 :(得分:5)
如@Axeman在评论中所说,你有一个命名向量。将其转换为数据帧的最简单方法是使用基数为R的stack
- 函数。
一些示例数据:
output <- setNames(c(92.08,90.68,54.09,92.87,97.40), LETTERS[1:5])
看起来像:
> output A B C D E 92.08 90.68 54.09 92.87 97.40
使用以下内容转换为数据框:
df <- stack(output)
给出:
> df values ind 1 92.08 A 2 90.68 B 3 54.09 C 4 92.87 D 5 97.40 E
获取问题中指定的列名和列顺序:
df <- setNames(stack(output)[2:1], c('Category','Value'))
给出:
Category Value 1 A 92.08 2 B 90.68 3 C 54.09 4 D 92.87 5 E 97.40