在r语言中,如何在数列中间插入数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在r语言中,如何在数列中间插入数据相关的知识,希望对你有一定的参考价值。

在r语言中,如何在数列中间插入数据

可能稍微有点麻烦。。。比如在向量v=(v[1],v[2],...,v[n])的第i个元素前加一个元素x变成(v[1],v[2],...,v[i-1],x,v[i],v[i+1],...,v[n])可以这样:

v<-c(v[1:(i-1)],x,v[i:length(v)])

参考技术A 可能稍微有点麻烦。。。比如在向量v=(v[1],v[2],...,v[n])的第i个元素前加一个元素x变成(v[1],v[2],...,v[i-1],x,v[i],v[i+1],...,v[n])可以这样:
v<-c(v[1:(i-1)],x,v[i:length(v)])
一般,数据会保存在EXCEL中,如图将数据整理好。整理好后要将数据另存为.csv格式才能被R语言识别接收。导入数据语句为mydata<-read.csv(file.choose()),输入到R语言后按回车即可选择文件夹位置,选择要分析的.csv数据导入。3数据导入后可以edit(mydata),R语言工作区就会弹出数据,可以进行编辑和修改。还可summary(madata),会输出最基本的数据描述性信息。
参考技术B append(x, values, after )

C语言进阶之旅 (刷题篇)一数列中插入一个数并保持正序

文章目录

方法1

思路

插入数,和首元素和尾元素判断,选择查找的入口,如果比最大的元素大直接插入在尾元素后面,如果比第一个元素少就遍历整个数组,找到插入的位置

在这里插入图片描述

查找
在这里插入图片描述

#define size 50
#include<stdlib.h>
#include<stdio.h>

int compar(const void*p1,const void*p2)
{
	return (*(int*)p1) - (*(int*)p2);
}
void Min(int *arr,int j,int n,int k)
{
	int* frist = arr+k;//首元素
	int* second = frist;
	int* right = arr + n - 1;
	while (*frist > j && right >= frist)
	{
			*(right + 1) = *right;
			right--;
	}
	*frist = j;
}
int main()
{
	int arr[size];
	int n;
	int i = 0;
	int j = 0;
	int k = 0;
	scanf("%d", &n);

	//int sz = sizeof(arr) / sizeof(arr[0]);

	for ( i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}
	
	qsort(arr, n, sizeof(arr[0]), compar);
	if (scanf("%d",&j)!=EOF)
	{
		//if (j < arr[0])//最小值
		//{
			for (k = 0; k < n; k++)
			{
				if (j < arr[k])
				{
					Min(arr, j, n, k);
					n++;
					break;
				}
                else if(j>arr[n-1])
				{
					arr[n] = j;
                    n++;
				}
               
			}
		//}
		
	}
	for ( i = 0; i <n ; i++)
	{
		printf("%d ", arr[i]);
	}

	return 0;
}

方法2

以二分查找的方式去找交换值

图解
在这里插入图片描述

在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
int compar(const void* p1, const void* p2)
{
	return (*(int*)p1) - (*(int*)p2);
}

void swop(int arr[], int middle,int inter,int n)//交换
{
	int middle2 = middle;
	int middle3 = n - middle+1;
	while (middle3--)
	{
		arr[n]= arr[n - 1];
		n = n - 1;
	}
	arr[middle2] = inter;
}

int  insertion(int arr[], int inter, int n)//寻找插入值
{
	int frist = 0;
	int end = n-1;//最最后的那个元素
	int middle;

	if (inter != 0)
	{
		while (frist <= end)
		{
			middle = (frist + end) / 2;//需要换的位置3

			if (arr[middle] < inter)
			{
				frist = middle + 1;
			}

			else if (arr[middle] > inter)
			{
				end = middle - 1;
			}
		}

		if (arr[middle] < inter)
		{
			return middle + 1;
		}
		else
		{
			return middle;
		}
	}
	else
	{
		return 0;//插入数为0时
	}

	
}

void print(int arr[],int n)
{
	int i;
	for ( i = 0; i <= n; i++)
	{
		printf("%d ", arr[i]);
	}
}


int main()
{
	int n;
	int arr[50];
	   scanf("%d", &n);
		int i;
		for (i = 0; i < n; i++)//输入数
		{
			scanf("%d", &arr[i]);
		}
		int inter;
		scanf("%d", &inter);

		qsort(arr, n, sizeof(arr[0]), compar);//排序

		int ret= insertion(arr, inter, n);//middle

		swop(arr,ret,inter,n);//交换

		print(arr,n);//打印
	return 0;
}

以上是关于在r语言中,如何在数列中间插入数据的主要内容,如果未能解决你的问题,请参考以下文章

如何一次性将完整的 R 数据框插入 SQL 表

如何在现有表的中间插入新的数据库记录?

有序数列的数据插入问题

如何在Excel数据中间插入数据而不覆盖原有数据?

如何从 R 在 MongoDB 中批量插入文档?

DataTables API:由于渲染(在某些元素中插入字符串),数据表无法对整数列进行排序