Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:将文本值从数据帧的一个单元格复制到另一个数据帧的另一个单元格_R_Loops_Repeat - Fatal编程技术网

R:将文本值从数据帧的一个单元格复制到另一个数据帧的另一个单元格

R:将文本值从数据帧的一个单元格复制到另一个数据帧的另一个单元格,r,loops,repeat,R,Loops,Repeat,我对更改问题内容表示诚挚的歉意,但我刚刚意识到问题不在于循环(我收到的结果不好,我最初认为循环有问题。我对此表示诚挚的歉意)。所以我现在写的是实际问题: 我想在另一个数据帧单元格的另一个文本值中传输数据帧单元格的文本值 例如: dataframe1: id text 1 athens 2 greece dataframe2: id wordmatch 1 NA 2 NA 我正在使用以下命令: dataframe2$wordmatch[1] <- dataframe1$t

我对更改问题内容表示诚挚的歉意,但我刚刚意识到问题不在于循环(我收到的结果不好,我最初认为循环有问题。我对此表示诚挚的歉意)。所以我现在写的是实际问题:

我想在另一个数据帧单元格的另一个文本值中传输数据帧单元格的文本值

例如:

dataframe1:

id text
1  athens
2  greece

dataframe2:
id  wordmatch
1   NA
2   NA
我正在使用以下命令:

dataframe2$wordmatch[1] <- dataframe1$text[1]

dataframe2$wordmatch[1]新答案:

此意外行为是由于df1的文本列可能是
factor
,而不是
character
,要验证,请尝试
类(df1$text)
。你可以通过以下两种方式来解决你的问题

df1$text <- as.character(df1$text)

请注意,您不必初始化循环变量
i
j
。希望这有帮助。

您的代码适用于我的测试用例

repetition <- c(1, 2, 3, 4, 5)
df <- data.frame(repetition)

for(i in 1:length(repetition)){
  for(d in 1:df$repetition[i]){
    print(i)
  }
}

E:我刚刚注意到您的代码使用了
for(I in 1:nrow(Sample)){
。是否应该改为
Sample
?也许您应该检查代码的区分大小写错误。

我找到了答案。需要使用函数paste()

dataframe2$wordmatch[1] <- paste(dataframe1$text[1])

dataframe2$wordmatch[1]这听起来像是一个XY问题。如果我是你,我会描述实际问题,看看你是否可以首先尝试避免循环中的循环。谢谢你Florian,但在我的情况下它不起作用。我会编辑问题并添加我正在使用的确切代码。谢谢你pandayo,但在我的情况下它不起作用。我会添加我使用过act代码。您的dataframe1在创建时是否包含
stringsAsFactors=F
?必须使用
paste()
可能会导致将字符串保存为dataframe中的因子。
[1] "i: 1, j: 1"
[1] "i: 1, j: 2"
[1] "i: 2, j: 1"
[1] "i: 2, j: 2"
[1] "i: 2, j: 3"
[1] "i: 3, j: 1"
[1] "i: 3, j: 2"
[1] "i: 3, j: 3"
[1] "i: 3, j: 4"
[1] "i: 4, j: 1"
[1] "i: 4, j: 2"
repetition <- c(1, 2, 3, 4, 5)
df <- data.frame(repetition)

for(i in 1:length(repetition)){
  for(d in 1:df$repetition[i]){
    print(i)
  }
}
[1] 1
[1] 2
[1] 2
[1] 3
[1] 3
[1] 3
[1] 4
[1] 4
[1] 4
[1] 4
[1] 5
[1] 5
[1] 5
[1] 5
[1] 5
dataframe2$wordmatch[1] <- paste(dataframe1$text[1])