我想将数据框List中的列名“Name”与数据框“卷”的Rowname匹配并对列执行计算。如何匹配行中的元素与列中的元素并在其中执行计算
我可以使用match或row.match来达到这个目的。
我试图做这样的事情
Total <- as.data.frame(matrix(0, ncol = 5, nrow = 5))
for (i in 1:5)
{
print(List$S.No[i] * 100)
for (j in 1:5)
{
if (match(List$Name, colnames(Volume)), 2]))
Value = Total + Volume[j]
print(Value)
}
}
print(Total)
问题的代码:
Total <- as.data.frame(matrix(0, ncol = 5, nrow = 5))
for (i in 1:5)
{
print(List$S.No[i] * 100)
for (j in 1:5)
{
if (match(List$Name, colnames(Volume)), 2]))
# This match condition is not correct. I do not know how to call the column header
Value = Total + Volume[i]
# I want to add the data from the matching column to Total
print(Value)
}
}
print(Total)
我要与相应的列读取列表$名称匹配的第一个元素,提取列并对其执行简单的添加并将结果存储在数据帧“Total”中。我希望对该行中的所有元素分别进行同样的操作。
List
S.No \t Name
2 \t Ba
1 \t Ar
5 \t Ca
3 \t Bl
4 \t Bu
Volume
Ar \t Ba \t Bl \t Bu \t Ca \t
-5.1275 \t 1.3465 \t -1.544 \t -0.0877 \t 3.2955 \t
-2.2385 \t 1.5065 \t 0.193 \t 1.082 \t 3.074 \t
-5.3705 \t 1.1285 \t 1.966 \t 1.183 \t -1.9305 \t
-6.4925 \t 1.5735 \t 1.36 \t -0.0761 \t 2.0875 \t
-5.068 \t 0.9455 \t 0.947 \t -0.7775 \t 3.832 \t
我知道这是可以合并两个文件,并使用sapply功能后进行。但是因为我想在数据帧“List”上使用for循环,所以我只想比较两个数据帧,并在循环结束后每次将结果分别存储到另一个数据帧。所以合并这些文件并不能解决这个问题。
实际列表数据框由23条记录组成,实际卷数据框由18000条记录组成。
我想建立一个函数,但不知道作为for循环是必要的这种计算。有更好更简单的方法来执行此任务吗?
代码有一些错误。错误if(List_Sample $ Name [i] == colnames(Volume [,j]))Total [,i] < - Total [,: 参数长度为零。我不确定错误的含义。 – RVRLibra
对不起! if(List $ Name [i] == colnames(Volume [j]))。删除姓名(卷[,j])中的',') –
即使这样也行不通。错误'[.data.frame'(Total,,i):未定义的列被选中,这是错误。我认为这是循环的问题。 – RVRLibra